OSDN Git Service

[VM][General] Merge Upstream 20180530.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 29 Sep 2018 19:11:23 +0000 (04:11 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 29 Sep 2018 19:11:23 +0000 (04:11 +0900)
102 files changed:
source/history.txt
source/readme.txt
source/revision.txt
source/src/common.cpp
source/src/common.h
source/src/config.cpp
source/src/config.h
source/src/debugger.cpp
source/src/emu.cpp
source/src/fileio.cpp
source/src/qt/emuutils/CMakeLists.txt
source/src/qt/gui/menu_harddisk.cpp
source/src/qt/gui/util_hdd.cpp
source/src/res/credits.html
source/src/res/fm77l4.ico [new file with mode: 0644]
source/src/res/fm77l4.rc [new file with mode: 0644]
source/src/res/fmr30.rc
source/src/res/fmr50_i286.rc
source/src/res/fmr50_i386.rc
source/src/res/fmr50_i486.rc
source/src/res/fmr60.rc
source/src/res/fmr70.rc
source/src/res/fmr80.rc
source/src/res/mz1500.rc
source/src/res/mz2200.rc
source/src/res/mz2500.rc
source/src/res/mz2800.rc
source/src/res/mz800.rc
source/src/res/mz80a.rc
source/src/res/mz80b.rc
source/src/res/pc9801ra.rc
source/src/res/pc9801vx.rc
source/src/res/pc98rl.rc
source/src/res/pc98xa.rc
source/src/res/pc98xl.rc
source/src/res/x1.rc
source/src/res/x1turbo.rc
source/src/res/x1turboz.rc
source/src/res/x1twin.rc
source/src/vm/common_vm/CMakeLists.txt
source/src/vm/debugger.h
source/src/vm/disk.cpp
source/src/vm/fm7/display.cpp
source/src/vm/fm7/fm7.cpp
source/src/vm/fm7/vram.cpp
source/src/vm/fmr30/floppy.cpp
source/src/vm/fmr30/fmr30.cpp
source/src/vm/fmr30/fmr30.h
source/src/vm/fmr50/bios.cpp
source/src/vm/fmr50/fmr50.cpp
source/src/vm/fmr50/fmr50.h
source/src/vm/harddisk.cpp
source/src/vm/harddisk.h
source/src/vm/hd146818p.cpp
source/src/vm/io.cpp
source/src/vm/mb8877.cpp
source/src/vm/mb8877.h
source/src/vm/mz2500/mz2500.cpp
source/src/vm/mz2500/mz2500.h
source/src/vm/mz2500/mz80b.cpp
source/src/vm/mz2500/mz80b.h
source/src/vm/mz2800/floppy.cpp
source/src/vm/mz2800/mz2800.cpp
source/src/vm/mz2800/mz2800.h
source/src/vm/mz2800/sasi.cpp [new file with mode: 0644]
source/src/vm/mz2800/sasi.h [new file with mode: 0644]
source/src/vm/mz700/mz700.cpp
source/src/vm/mz700/mz700.h
source/src/vm/mz80k/mz80k.cpp
source/src/vm/pc9801/membus.cpp
source/src/vm/pc9801/pc9801.cpp
source/src/vm/pc9801/pc9801.h
source/src/vm/pc9801/sasi.cpp
source/src/vm/pc9801/sasi.h
source/src/vm/pc98ha/bios.cpp
source/src/vm/scsi_cdrom.cpp
source/src/vm/scsi_cdrom.h
source/src/vm/scsi_dev.cpp
source/src/vm/scsi_dev.h
source/src/vm/scsi_hdd.cpp
source/src/vm/scsi_hdd.h
source/src/vm/upd71071.cpp
source/src/vm/upd765a.cpp
source/src/vm/upd765a.h
source/src/vm/x1/floppy.cpp
source/src/vm/x1/floppy.h
source/src/vm/x1/x1.cpp
source/src/vm/x1/x1.h
source/src/win32/winmain.cpp
source/tool/installer_unix.sh
source/tool/mz2500/create_hd.vcproj [new file with mode: 0644]
source/vc++2008/build9.bat
source/vc++2008/fm77l4.vcproj [new file with mode: 0644]
source/vc++2008/mz2800.vcproj
source/vc++2008/pc98xa.vcproj [new file with mode: 0644]
source/vc++2013/build12.bat
source/vc++2013/fm77l4.vcxproj [new file with mode: 0644]
source/vc++2013/fm77l4.vcxproj.filters [new file with mode: 0644]
source/vc++2013/mz2800.vcxproj
source/vc++2013/mz2800.vcxproj.filters
source/vc++2013/pc98xa.vcxproj [new file with mode: 0644]
source/vc++2013/pc98xa.vcxproj.filters [new file with mode: 0644]

index 7dd2675..891246d 100644 (file)
@@ -1,3 +1,33 @@
+9/30/2018
+
+[COMMON/FILEIO] improve Fseek for compressed file by gzip
+[EMU] improve to mount/unmount hard disk image in reset() if not hot swappable
+[EMU/DEBUGGER] add commands for checkpoint
+[EMU/DEBUGGER] improve to read/write files in initial current directory
+
+[VM/DISK] improve for case 2D disk is inserted to 2DD drive (thanks Mr.Sato)
+[VM/HARDDISK] support Virtual98 hdd image
+[VM/HARDDISK] improve for solid image file
+[VM/IO] improve debug log
+[VM/MSM58321] fix pulse event (thanks Mr.Artane.)
+[VM/SCSI_DEV] add is_hot_swappable
+[VM/SCSI_HDD] improve to mount/unmount image in reset() if not hot swappable
+[VM/SASI_HDD] support SASI hard disk drive
+[VM/SN76489AN] fix save/load state function
+[VM/UPD71071] fix verify command
+
+[FM77L4] add eFM77L4 codes (thanks Mr.Artane.)
+[MZ80A] improve to switch 2D/2DD drive type
+[MZ80B] improve to switch 2D/2DD drive type
+[MZ1500] improve to switch 2D/2DD drive type
+[MZ2500] improve to switch 2D/2DD drive type
+[MZ2800/FLOPPY] improve to switch 2D/2DD drive type
+[MZ2800/SASI] support SASI I/F and HDD (partial)
+[PC98XA] support NEC PC-98XA
+[PC9801/MEMBUS] fix save/load state function
+[X1TURBO/FLOPPY] improve to switch 2D/2DD drive type (thanks Mr.Sato)
+
+
 5/24/2018
 
 [COMMON] import Mr.Artane.'s fixes (Commits on May 10, 2018)
index 104245f..0f61070 100644 (file)
@@ -1,5 +1,5 @@
 Binary archive of retro pc emulator common source code
-                                                               5/24/2018
+                                                               9/30/2018                                                               
 
 --- What's this ?
 
@@ -31,6 +31,7 @@ This archive includes the binaries of the emulators listed below:
                eFM8            FM-8 (by Mr.Artane.)
                eFM7            FM-7 (by Mr.Artane.)
                eFM77           FM-77 (by Mr.Artane.)
+               eFM77L4         FM-77L4 (by Mr.Artane.)
                eFM77AV         FM77AV (by Mr.Artane.)
                eFM77AV40       FM77AV40 (by Mr.Artane.)
                eFM77AV40EX     FM77AV40EX (by Mr.Artane.)
@@ -74,6 +75,7 @@ This archive includes the binaries of the emulators listed below:
                ePC-9801VM      PC-9801VM
                ePC-9801VX      PC-9801VX
                ePC-9801RA      PC-9801RA
+               ePC-98XA        PC-98XA
                ePC-98XL        PC-98XL
                ePC-98RL        PC-98RL
                ePC-98DO        PC-98DO
index 3af35be..d7ca697 100644 (file)
@@ -1,3 +1,3 @@
-<B><FONT SIZE=-1>Upstream 2018-05-24<BR>
-Qt Port and FM7 series 2018-08-07<BR>
+<B><FONT SIZE=-1>Upstream 2018-09-30<BR>
+Qt Port and FM7 series 2018-09-30<BR>
 </FONT></B>
index 8149a80..5a94f4e 100644 (file)
        std::string DLL_PREFIX sRssDir;
 #endif
 
+void common_initialize()
+{
+       get_initial_current_path();
+}
+
 uint32_t DLL_PREFIX EndianToLittle_DWORD(uint32_t x)
 {
 #if defined(__LITTLE_ENDIAN__)
@@ -966,6 +971,32 @@ const _TCHAR *DLL_PREFIX get_application_path()
        return (const _TCHAR *)app_path;
 }
 
+const _TCHAR *DLL_PREFIX get_initial_current_path()
+{
+       static _TCHAR current_path[_MAX_PATH];
+       static bool initialized = false;
+       
+       if(!initialized) {
+#if defined(_WIN32) && !defined(_USE_QT)
+               GetCurrentDirectoryA(_MAX_PATH, current_path);
+#else
+               getcwd(current_path, _MAX_PATH);
+#endif
+               int len = strlen(current_path);
+               if(current_path[len - 1] != '\\' && current_path[len - 1] != '/') {
+#if defined(_WIN32) || defined(Q_OS_WIN)
+                       current_path[len] = '\\';
+#else
+                       current_path[len] = '/';
+#endif
+                       current_path[len + 1] = '\0';
+               }
+
+               initialized = true;
+       }
+       return (const _TCHAR *)current_path;
+}
+
 const _TCHAR *DLL_PREFIX create_local_path(const _TCHAR *format, ...)
 {
        static _TCHAR file_path[8][_MAX_PATH];
@@ -1003,25 +1034,6 @@ bool DLL_PREFIX is_absolute_path(const _TCHAR *file_path)
        return (_tcslen(file_path) > 1 && (file_path[0] == _T('/') || file_path[0] == _T('\\')));
 }
 
-const _TCHAR *DLL_PREFIX create_absolute_path(const _TCHAR *file_name)
-{
-       static _TCHAR file_path[8][_MAX_PATH];
-       static unsigned int table_index = 0;
-       unsigned int output_index = (table_index++) & 7;
-       
-       if(is_absolute_path(file_name)) {
-               my_tcscpy_s(file_path[output_index], _MAX_PATH, file_name);
-       } else {
-               my_tcscpy_s(file_path[output_index], _MAX_PATH, create_local_path(file_name));
-       }
-       return (const _TCHAR *)file_path[output_index];
-}
-
-void DLL_PREFIX create_absolute_path(_TCHAR *file_path, int length, const _TCHAR *file_name)
-{
-       my_tcscpy_s(file_path, length, create_absolute_path(file_name));
-}
-
 const _TCHAR *DLL_PREFIX create_date_file_path(const _TCHAR *extension)
 {
        cur_time_t cur_time;
index ba7bb9e..d6e7153 100644 (file)
@@ -1107,12 +1107,11 @@ bool DLL_PREFIX load_wav_to_monoral(void *__fio, int16_t **buffer, uint32_t *rat
 
 // file path
 const _TCHAR *DLL_PREFIX get_application_path();
+const _TCHAR *DLL_PREFIX get_initial_current_path();
 const _TCHAR *DLL_PREFIX create_local_path(const _TCHAR *format, ...);
 void DLL_PREFIX create_local_path(_TCHAR *file_path, int length, const _TCHAR *format, ...);
 const _TCHAR *DLL_PREFIX create_date_file_path(const _TCHAR *extension);
 bool DLL_PREFIX is_absolute_path(const _TCHAR *file_path);
-const _TCHAR *DLL_PREFIX create_absolute_path(const _TCHAR *file_name);
-void DLL_PREFIX create_absolute_path(_TCHAR *file_path, int length, const _TCHAR *file_name);
 void DLL_PREFIX create_date_file_path(_TCHAR *file_path, int length, const _TCHAR *extension);
 bool DLL_PREFIX check_file_extension(const _TCHAR *file_path, const _TCHAR *ext);
 const _TCHAR *DLL_PREFIX get_file_path_without_extensiton(const _TCHAR *file_path);
@@ -1130,6 +1129,8 @@ const wchar_t *DLL_PREFIX tchar_to_wchar(const _TCHAR *ts);
 
 
 // misc
+void common_initialize();
+
 int32_t DLL_PREFIX muldiv_s32(int32_t nNumber, int32_t nNumerator, int32_t nDenominator);
 uint32_t DLL_PREFIX muldiv_u32(uint32_t nNumber, uint32_t nNumerator, uint32_t nDenominator);
 
index c9e44d8..2a8accf 100644 (file)
@@ -312,6 +312,7 @@ void load_config(const _TCHAR *config_path)
                        for(int i = 0; i < MAX_HISTORY; i++) {
                                MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("RecentHardDiskPath%d_%d"), drv + 1, i + 1), _T(""), config.recent_hard_disk_path[drv][i], _MAX_PATH, config_path);
                        }
+                       MyGetPrivateProfileString(_T("RecentFiles"), create_string(_T("LastHardDiskPath%d"), drv + 1), _T(""), config.last_hard_disk_path[drv], _MAX_PATH, config_path);
                }
        #endif
        #ifdef USE_TAPE
@@ -667,6 +668,7 @@ void save_config(const _TCHAR *config_path)
                        for(int i = 0; i < MAX_HISTORY; i++) {
                                MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("RecentHardDiskPath%d_%d"), drv + 1, i + 1), config.recent_hard_disk_path[drv][i], config_path);
                        }
+                       MyWritePrivateProfileString(_T("RecentFiles"), create_string(_T("LastHardDiskPath%d"), drv + 1), config.last_hard_disk_path[drv], config_path);
                }
        #endif
        #ifdef USE_TAPE
index bf4db5d..9aef1fc 100644 (file)
@@ -177,6 +177,7 @@ typedef struct {
        #if defined(USE_SHARED_DLL) || defined(USE_HARD_DISK)
                _TCHAR initial_hard_disk_dir[_MAX_PATH];
                _TCHAR recent_hard_disk_path[USE_HARD_DISK_TMP][MAX_HISTORY][_MAX_PATH];
+               _TCHAR last_hard_disk_path[USE_HARD_DISK_TMP][_MAX_PATH];
        #endif
        #if defined(USE_SHARED_DLL) || defined(USE_TAPE)
                _TCHAR initial_tape_dir[_MAX_PATH];
index 1e3c685..b3edcc9 100644 (file)
 static FILEIO* logfile = NULL;
 static FILEIO* cmdfile = NULL;
 
+const _TCHAR *my_absolute_path(const _TCHAR *file_name)
+{
+       static _TCHAR file_path[_MAX_PATH];
+       
+       if(is_absolute_path(file_name)) {
+               my_tcscpy_s(file_path, _MAX_PATH, file_name);
+       } else {
+               my_stprintf_s(file_path, _MAX_PATH, _T("%s%s"), get_initial_current_path(), file_name);
+       }
+       return (const _TCHAR *)file_path;
+}
+
 void my_printf(OSD *osd, const _TCHAR *format, ...)
 {
        _TCHAR buffer[1024];
@@ -160,7 +172,7 @@ const _TCHAR *my_get_value_and_symbol(DEVICE *target, const _TCHAR *format, uint
 
 break_point_t *get_break_point(DEBUGGER *debugger, const _TCHAR *command)
 {
-       if(command[0] == _T('B') || command[0] == _T('b')) {
+       if(command[0] == _T('B') || command[0] == _T('b') || command[0] == _T('C') || command[0] == _T('c')) {
                return &debugger->bp;
        } else if(command[0] == _T('R') || command[0] == _T('r')) {
                return &debugger->rbp;
@@ -595,12 +607,12 @@ void* debugger_thread(void *lpx)
                                if(num >= 2 && params[1][0] == _T('\"')) {
                                        my_tcscpy_s(buffer, 1024, prev_command);
                                        if((token = my_tcstok_s(buffer, _T("\""), &context)) != NULL && (token = my_tcstok_s(NULL, _T("\""), &context)) != NULL) {
-                                               my_tcscpy_s(debugger->file_path, _MAX_PATH, create_absolute_path(token));
+                                               my_tcscpy_s(debugger->file_path, _MAX_PATH, my_absolute_path(token));
                                        } else {
                                                my_printf(p->osd, _T("invalid parameter\n"));
                                        }
                                } else if(num == 2) {
-                                       my_tcscpy_s(debugger->file_path, _MAX_PATH, create_absolute_path(params[1]));
+                                       my_tcscpy_s(debugger->file_path, _MAX_PATH, my_absolute_path(params[1]));
                                } else {
                                        my_printf(p->osd, _T("invalid parameter number\n"));
                                }
@@ -744,7 +756,8 @@ void* debugger_thread(void *lpx)
                                } else {
                                        my_printf(p->osd, _T("invalid parameter number\n"));
                                }
-                       } else if(_tcsicmp(params[0], _T( "BP")) == 0 || _tcsicmp(params[0], _T("RBP")) == 0 || _tcsicmp(params[0], _T("WBP")) == 0) {
+                       } else if(_tcsicmp(params[0], _T( "BP")) == 0 || _tcsicmp(params[0], _T("RBP")) == 0 || _tcsicmp(params[0], _T("WBP")) == 0 ||
+                                 _tcsicmp(params[0], _T( "CP")) == 0 || _tcsicmp(params[0], _T("RCP")) == 0 || _tcsicmp(params[0], _T("WCP")) == 0) {
                                break_point_t *bp = get_break_point(debugger, params[0]);
                                if(num == 2) {
                                        uint32_t addr = my_hexatoi(cpu, params[1]);
@@ -754,6 +767,7 @@ void* debugger_thread(void *lpx)
                                                        bp->table[i].addr = addr;
                                                        bp->table[i].mask = cpu->get_debug_prog_addr_mask();
                                                        bp->table[i].status = 1;
+                                                       bp->table[i].check_point = (params[0][0] == 'C' || params[0][0] == 'c' || params[0][1] == 'C' || params[0][1] == 'c');
                                                        found = true;
                                                }
                                        }
@@ -763,7 +777,8 @@ void* debugger_thread(void *lpx)
                                } else {
                                        my_printf(p->osd, _T("invalid parameter number\n"));
                                }
-                       } else if(_tcsicmp(params[0], _T("IBP")) == 0 || _tcsicmp(params[0], _T("OBP")) == 0) {
+                       } else if(_tcsicmp(params[0], _T("IBP")) == 0 || _tcsicmp(params[0], _T("OBP")) == 0 ||
+                                 _tcsicmp(params[0], _T("ICP")) == 0 || _tcsicmp(params[0], _T("OCP")) == 0) {
                                break_point_t *bp = get_break_point(debugger, params[0]);
                                if(num == 2 || num == 3) {
                                        uint32_t addr = my_hexatoi(cpu, params[1]), mask = 0xff;
@@ -776,6 +791,7 @@ void* debugger_thread(void *lpx)
                                                        bp->table[i].addr = addr;
                                                        bp->table[i].mask = mask;
                                                        bp->table[i].status = 1;
+                                                       bp->table[i].check_point = (params[0][1] == 'C' || params[0][1] == 'c');
                                                        found = true;
                                                }
                                        }
@@ -831,7 +847,10 @@ void* debugger_thread(void *lpx)
                                        break_point_t *bp = get_break_point(debugger, params[0]);
                                        for(int i = 0; i < MAX_BREAK_POINTS; i++) {
                                                if(bp->table[i].status) {
-                                                       my_printf(p->osd, _T("%d %c %s\n"), i + 1, bp->table[i].status == 1 ? _T('e') : _T('d'), my_get_value_and_symbol(cpu, _T("%08X"), bp->table[i].addr));
+                                                       my_printf(p->osd, _T("%d %c %s %s\n"), i + 1,
+                                                               bp->table[i].status == 1 ? _T('e') : _T('d'),
+                                                               my_get_value_and_symbol(cpu, _T("%08X"), bp->table[i].addr),
+                                                               bp->table[i].check_point ? "checkpoint" : "");
                                                }
                                        }
                                } else {
@@ -842,7 +861,11 @@ void* debugger_thread(void *lpx)
                                        break_point_t *bp = get_break_point(debugger, params[0]);
                                        for(int i = 0; i < MAX_BREAK_POINTS; i++) {
                                                if(bp->table[i].status) {
-                                                       my_printf(p->osd, _T("%d %c %08X %08X\n"), i + 1, bp->table[i].status == 1 ? _T('e') : _T('d'), bp->table[i].addr, bp->table[i].mask);
+                                                       my_printf(p->osd, _T("%d %c %s %08X %s\n"), i + 1,
+                                                               bp->table[i].status == 1 ? _T('e') : _T('d'),
+                                                               my_get_value_and_symbol(cpu, _T("%08X"), bp->table[i].addr),
+                                                               bp->table[i].mask,
+                                                               bp->table[i].check_point ? "checkpoint" : "");
                                                }
                                        }
                                } else {
@@ -856,14 +879,17 @@ void* debugger_thread(void *lpx)
                                                debugger->bp.table[0].addr = (cpu->get_next_pc() + cpu->debug_dasm(cpu->get_next_pc(), buffer, 1024)) & cpu->get_debug_prog_addr_mask();
                                                debugger->bp.table[0].mask = cpu->get_debug_prog_addr_mask();
                                                debugger->bp.table[0].status = 1;
+                                               debugger->bp.table[0].check_point = false;
                                                break_points_stored = true;
                                        } else if(num >= 2) {
                                                debugger->store_break_points();
                                                debugger->bp.table[0].addr = my_hexatoi(cpu, params[1]) & cpu->get_debug_prog_addr_mask();
                                                debugger->bp.table[0].mask = cpu->get_debug_prog_addr_mask();
                                                debugger->bp.table[0].status = 1;
+                                               debugger->bp.table[0].check_point = false;
                                                break_points_stored = true;
                                        }
+RESTART_GO:
                                        debugger->now_going = true;
                                        debugger->now_suspended = false;
 #if defined(_MSC_VER)                                     
@@ -919,24 +945,33 @@ void* debugger_thread(void *lpx)
                                                        if(_tcsicmp(params[0], _T("G")) == 0) {
                                                                my_printf(p->osd, _T("breaked at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()));
                                                        }
+                                                       debugger->bp.hit = false;
+                                                       if(debugger->bp.restart) goto RESTART_GO;
                                                } else if(debugger->rbp.hit) {
                                                        my_printf(p->osd, _T("breaked at %s: memory %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), debugger->rbp.hit_addr),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                       debugger->rbp.hit = false;
+                                                       if(debugger->rbp.restart) goto RESTART_GO;
                                                } else if(debugger->wbp.hit) {
                                                        my_printf(p->osd, _T("breaked at %s: memory %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), debugger->wbp.hit_addr),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                       debugger->wbp.hit = false;
+                                                       if(debugger->wbp.restart) goto RESTART_GO;
                                                } else if(debugger->ibp.hit) {
                                                        my_printf(p->osd, _T("breaked at %s: port %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), debugger->ibp.hit_addr),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                       debugger->ibp.hit = false;
+                                                       if(debugger->ibp.restart) goto RESTART_GO;
                                                } else if(debugger->obp.hit) {
                                                        my_printf(p->osd, _T("breaked at %s: port %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), debugger->obp.hit_addr),
                                                                my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                       debugger->obp.hit = false;
+                                                       if(debugger->obp.restart) goto RESTART_GO;
                                                }
-                                               debugger->bp.hit = debugger->rbp.hit = debugger->wbp.hit = debugger->ibp.hit = debugger->obp.hit = false;
                                        } else {
                                                p->osd->set_console_text_attribute(FOREGROUND_RED | FOREGROUND_INTENSITY);
                                                my_printf(p->osd, _T("breaked at %s: esc key was pressed\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()));
@@ -989,33 +1024,41 @@ void* debugger_thread(void *lpx)
                                                        my_printf(p->osd, _T("%s\n"), buffer);
                                                }
                                                
-                                               if(debugger->hit() || (p->osd->is_console_key_pressed(VK_ESCAPE) && p->osd->is_console_active())) {
+                                               if(debugger->hit()) {
+                                                       p->osd->set_console_text_attribute(FOREGROUND_RED | FOREGROUND_INTENSITY);
+                                                       if(debugger->bp.hit) {
+                                                               my_printf(p->osd, _T("breaked at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()));
+                                                               debugger->bp.hit = false;
+                                                               if(!debugger->bp.restart) break;
+                                                       } else if(debugger->rbp.hit) {
+                                                               my_printf(p->osd, _T("breaked at %s: memory %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), debugger->rbp.hit_addr),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                               debugger->rbp.hit = false;
+                                                               if(!debugger->rbp.restart) break;
+                                                       } else if(debugger->wbp.hit) {
+                                                               my_printf(p->osd, _T("breaked at %s: memory %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), debugger->wbp.hit_addr),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                               debugger->wbp.hit = false;
+                                                               if(!debugger->wbp.restart) break;
+                                                       } else if(debugger->ibp.hit) {
+                                                               my_printf(p->osd, _T("breaked at %s: port %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), debugger->ibp.hit_addr),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                               debugger->ibp.hit = false;
+                                                               if(!debugger->ibp.restart) break;
+                                                       } else if(debugger->obp.hit) {
+                                                               my_printf(p->osd, _T("breaked at %s: port %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), debugger->obp.hit_addr),
+                                                                       my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
+                                                               debugger->obp.hit = false;
+                                                               if(!debugger->obp.restart) break;
+                                                       }
+                                               } else if(p->osd->is_console_key_pressed(VK_ESCAPE) && p->osd->is_console_active()) {
                                                        break;
                                                }
                                        }
-                                       if(debugger->hit()) {
-                                               p->osd->set_console_text_attribute(FOREGROUND_RED | FOREGROUND_INTENSITY);
-                                               if(debugger->bp.hit) {
-                                                       my_printf(p->osd, _T("breaked at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()));
-                                               } else if(debugger->rbp.hit) {
-                                                       my_printf(p->osd, _T("breaked at %s: memory %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), debugger->rbp.hit_addr),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
-                                               } else if(debugger->wbp.hit) {
-                                                       my_printf(p->osd, _T("breaked at %s: memory %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), debugger->wbp.hit_addr),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
-                                               } else if(debugger->ibp.hit) {
-                                                       my_printf(p->osd, _T("breaked at %s: port %s was read at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), debugger->ibp.hit_addr),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
-                                               } else if(debugger->obp.hit) {
-                                                       my_printf(p->osd, _T("breaked at %s: port %s was written at %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), debugger->obp.hit_addr),
-                                                               my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_pc()));
-                                               }
-                                               debugger->bp.hit = debugger->rbp.hit = debugger->wbp.hit = debugger->ibp.hit = debugger->obp.hit = false;
-                                       }
                                        p->osd->set_console_text_attribute(FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
                                        cpu->debug_dasm(cpu->get_next_pc(), buffer, 1024);
                                        my_printf(p->osd, _T("next\t%s  %s\n"), my_get_value_and_symbol(cpu, _T("%08X"), cpu->get_next_pc()), buffer);
@@ -1036,7 +1079,7 @@ void* debugger_thread(void *lpx)
                                                logfile = NULL;
                                        }
                                        logfile = new FILEIO();
-                                       logfile->Fopen(create_absolute_path(params[1]), FILEIO_WRITE_ASCII);
+                                       logfile->Fopen(my_absolute_path(params[1]), FILEIO_WRITE_ASCII);
                                } else {
                                        my_printf(p->osd, _T("invalid parameter number\n"));
                                }
@@ -1049,7 +1092,7 @@ void* debugger_thread(void *lpx)
                                        } else {
                                                cmdfile = new FILEIO();
                                        }
-                                       if(!cmdfile->Fopen(create_absolute_path(params[1]), FILEIO_READ_ASCII)) {
+                                       if(!cmdfile->Fopen(my_absolute_path(params[1]), FILEIO_READ_ASCII)) {
                                                delete cmdfile;
                                                cmdfile = NULL;
                                                my_printf(p->osd, _T("can't open %s\n"), params[1]);
@@ -1206,6 +1249,7 @@ void* debugger_thread(void *lpx)
                                my_printf(p->osd, _T("{I,O}BP <port> [<mask>] - set breakpoint (break at i/o access)\n"));
                                my_printf(p->osd, _T("[{R,W,I,O}]B{C,D,E} {*,<list>} - clear/disable/enable breakpoint(s)\n"));
                                my_printf(p->osd, _T("[{R,W,I,O}]BL - list breakpoint(s)\n"));
+                               my_printf(p->osd, _T("[{R,W,I,O}]CP <address/port> [<mask>] - set checkpoint (don't break)\n"));
                                
                                my_printf(p->osd, _T("G - go (press esc key to break)\n"));
                                my_printf(p->osd, _T("G <address> - go and break at address\n"));
index dde03a6..c925418 100644 (file)
@@ -111,6 +111,14 @@ EMU::EMU()
                vm->set_sound_device_volume(i, config.sound_volume_l[i], config.sound_volume_r[i]);
        }
 #endif
+#ifdef USE_HARD_DISK
+       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
+               if(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv])) {
+                       vm->open_hard_disk(drv, config.last_hard_disk_path[drv]);
+                       my_tcscpy_s(hard_disk_status[drv].path, _MAX_PATH, config.last_hard_disk_path[drv]);
+               }
+       }
+#endif
        vm->reset();
        now_suspended = false;
 }
@@ -263,10 +271,10 @@ void EMU::reset()
                        vm->set_sound_device_volume(i, config.sound_volume_l[i], config.sound_volume_r[i]);
                }
 #endif
-               vm->reset();
-               osd->unlock_vm();
                // restore inserted medias
                restore_media();
+               vm->reset();
+               osd->unlock_vm();
        } else {
                // reset virtual machine
                osd->lock_vm();         
@@ -1826,6 +1834,8 @@ static _TCHAR prev_buffer[1024] = {0};
 
 void EMU::out_debug_log(const _TCHAR* format, ...)
 {
+       common_initialize();
+       
 #ifdef _DEBUG_LOG
        va_list ap;
        _TCHAR buffer[1024];
@@ -2357,9 +2367,9 @@ void EMU::open_hard_disk(int drv, const _TCHAR* file_path)
                        hard_disk_status[drv].wait_count = (int)(FRAMES_PER_SEC / 2);
 #endif
 #if USE_HARD_DISK > 1
-                       out_message(_T("HD%d: Ejected"), drv + BASE_HARD_DISK_NUM);
+                       out_message(_T("HD%d: Unmounted"), drv + BASE_HARD_DISK_NUM);
 #else
-                       out_message(_T("HD: Ejected"));
+                       out_message(_T("HD: Unmounted"));
 #endif
                } else if(hard_disk_status[drv].wait_count == 0) {
                        vm->open_hard_disk(drv, file_path);
@@ -2370,6 +2380,7 @@ void EMU::open_hard_disk(int drv, const _TCHAR* file_path)
 #endif
                }
                my_tcscpy_s(hard_disk_status[drv].path, _MAX_PATH, file_path);
+               my_tcscpy_s(config.last_hard_disk_path[drv], _MAX_PATH, file_path);
        }
 }
 
@@ -2379,10 +2390,11 @@ void EMU::close_hard_disk(int drv)
                vm->close_hard_disk(drv);
                clear_media_status(&hard_disk_status[drv]);
 #if USE_HARD_DISK > 1
-               out_message(_T("HD%d: Ejected"), drv + BASE_HARD_DISK_NUM);
+               out_message(_T("HD%d: Unmounted"), drv + BASE_HARD_DISK_NUM);
 #else
-               out_message(_T("HD: Ejected"));
+               out_message(_T("HD: Unmounted"));
 #endif
+               config.last_hard_disk_path[drv][0] = '\0';
        }
 }
 
@@ -2974,11 +2986,13 @@ bool EMU::load_state_tmp(const _TCHAR* file_path)
                                                vm->set_sound_device_volume(i, config.sound_volume_l[i], config.sound_volume_r[i]);
                                        }
 #endif
+                                       restore_media();
                                        vm->reset();
                                        //osd->unlock_vm();
+                               } else {
+                                       // restore inserted medias
+                                       restore_media();
                                }
-                               // restore inserted medias
-                               restore_media();
                                // load vm state
                                if(vm->load_state(fio)) {
                                        // check end of state
index 1cc4e77..dddaf8c 100644 (file)
@@ -824,11 +824,11 @@ int FILEIO::Fseek(long offset, int origin)
        if(gz != NULL) {
                switch(origin) {
                case FILEIO_SEEK_CUR:
-                       return gzseek(gz, offset, SEEK_CUR);
+                       return (gzseek(gz, offset, SEEK_CUR) == -1 ? -1 : 0);
                case FILEIO_SEEK_END:
-                       return gzseek(gz, offset + gz_size, SEEK_SET);
+                       return (gzseek(gz, offset + gz_size, SEEK_SET) == -1 ? -1 : 0);
                case FILEIO_SEEK_SET:
-                       return gzseek(gz, offset, SEEK_SET);
+                       return (gzseek(gz, offset, SEEK_SET) == -1 ? -1 : 0);
                }
        } else
 #endif
index 4e4bb16..e6502e0 100644 (file)
@@ -15,7 +15,7 @@ set(s_qt_emuutils_srcs
 
 QT5_WRAP_CPP(s_qt_emuutils_headers_MOC ${s_qt_emuutils_headers})
        
-SET(THIS_LIB_VERSION 2.12.2
+SET(THIS_LIB_VERSION 2.12.3
 
 add_definitions(-D__LIBEMU_UTIL_VERSION=\"libCSPemu_utils.${THIS_LIB_VERSION}\")
 
index df26779..f5ee1cc 100644 (file)
@@ -38,7 +38,10 @@ void Menu_HDDClass::connect_menu_device_sub(void)
 void Menu_HDDClass::retranslate_pulldown_menu_device_sub(void)
 {
        //action_insert->setIcon(icon_floppy);
-       action_insert->setToolTip(QApplication::translate("MenuMedia", "Connect virtual hard disk file.", 0));
-       action_eject->setToolTip(QApplication::translate("MenuMedia", "Disconnect virtual hard disk.", 0));
+       action_insert->setText(QApplication::translate("MenuHDD", "Mount", 0));
+       action_insert->setToolTip(QApplication::translate("MenuHDD", "Mount virtual hard disk file.", 0));
+   
+       action_eject->setText(QApplication::translate("MenuHDD", "Unmount", 0));
+       action_eject->setToolTip(QApplication::translate("MenuHDD", "Unmount virtual hard disk.", 0));
 
 }
index eea58d9..b33c25a 100644 (file)
@@ -46,7 +46,7 @@ void Ui_MainWindowBase::eject_hard_disk(int drv)
 void Ui_MainWindowBase::CreateHardDiskMenu(int drv, int drv_base)
 {
        {
-               QString ext = "*.thd;*.nhd;*.hdi;*.dat";
+               QString ext = "*.thd;*.nhd;*.hdi;*.hdd;*.dat";
                QString desc1 = "Hard Disk Drive";
                menu_hdds[drv] = new Menu_HDDClass(menubar, QString::fromUtf8("HDD"), using_flags, this, drv, drv_base);
                menu_hdds[drv]->create_pulldown_menu();
index a311196..c08d2d3 100644 (file)
@@ -8,8 +8,8 @@
 <body>
 <h1>Common Source Code Project</h1>
 <DIV ALIGN=RIGHT><FONT SIZE=2>
-Upstream Version: 2018-05-24<BR>
-Qt Port and FM7 series 2018-08-07<BR>
+Upstream Version: 2018-09-30<BR>
+Qt Port and FM7 series 2018-09-30<BR>
 FFMPEG 4.0 + liblame 3.99 + libx264-155<BR>
 @@RevisionString@@
 </FONT></DIV>
diff --git a/source/src/res/fm77l4.ico b/source/src/res/fm77l4.ico
new file mode 100644 (file)
index 0000000..a46195d
Binary files /dev/null and b/source/src/res/fm77l4.ico differ
diff --git a/source/src/res/fm77l4.rc b/source/src/res/fm77l4.rc
new file mode 100644 (file)
index 0000000..d38ceae
--- /dev/null
@@ -0,0 +1,389 @@
+// 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_MOUSE,         VIRTKEY, CONTROL, NOINVERT
+    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 Main CPU",              ID_OPEN_DEBUGGER0
+        MENUITEM "Debug Sub CPU",               ID_OPEN_DEBUGGER1
+        MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER
+        MENUITEM SEPARATOR
+        MENUITEM "Exit",                        ID_EXIT
+    END
+    POPUP "FD1"
+    BEGIN
+        MENUITEM "Insert",                      ID_OPEN_FD1
+        MENUITEM "Eject",                       ID_CLOSE_FD1
+        MENUITEM SEPARATOR
+        MENUITEM "Write Protected",             ID_WRITE_PROTECT_FD1
+        MENUITEM "Correct Timing",              ID_CORRECT_TIMING_FD1
+        MENUITEM "Ignore CRC Errors",           ID_IGNORE_CRC_FD1
+        MENUITEM SEPARATOR
+        MENUITEM "Recent",                      ID_RECENT_FD1
+    END
+    POPUP "FD2"
+    BEGIN
+        MENUITEM "Insert",                      ID_OPEN_FD2
+        MENUITEM "Eject",                       ID_CLOSE_FD2
+        MENUITEM SEPARATOR
+        MENUITEM "Write Protected",             ID_WRITE_PROTECT_FD2
+        MENUITEM "Correct Timing",              ID_CORRECT_TIMING_FD2
+        MENUITEM "Ignore CRC Errors",           ID_IGNORE_CRC_FD2
+        MENUITEM SEPARATOR
+        MENUITEM "Recent",                      ID_RECENT_FD2
+    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 "Boot"
+        BEGIN
+            MENUITEM "BASIC"                    ID_VM_BOOT_MODE0
+            MENUITEM "DOS"                      ID_VM_BOOT_MODE1
+            MENUITEM "MMR"                      ID_VM_BOOT_MODE2
+        END
+        POPUP "CPU"
+        BEGIN
+            MENUITEM "68B09 2.0MHz",            ID_VM_CPU_TYPE0
+            MENUITEM "68B09 1.2MHz",            ID_VM_CPU_TYPE1
+        END
+        POPUP "Option"
+        BEGIN
+            MENUITEM "Cycle Steal",             ID_VM_DIPSWITCH0
+            MENUITEM "Extra RAM",               ID_VM_DIPSWITCH1
+            MENUITEM "1MB FDD",                 ID_VM_DIPSWITCH7
+        END
+        POPUP "Mouse"
+        BEGIN
+            MENUITEM "None",                    ID_VM_MOUSE_TYPE0
+            MENUITEM "JS-Port1",                ID_VM_MOUSE_TYPE1
+            MENUITEM "JS-Port2",                ID_VM_MOUSE_TYPE2
+        END
+        POPUP "Sound"
+        BEGIN
+            MENUITEM "PSG",                     ID_VM_SOUND_TYPE0
+            MENUITEM "PSG+OPN",                 ID_VM_SOUND_TYPE1
+            MENUITEM "PSG+WHG",                 ID_VM_SOUND_TYPE2
+            MENUITEM "PSG+OPN+WHG",             ID_VM_SOUND_TYPE3
+            MENUITEM "PSG+THG",                 ID_VM_SOUND_TYPE4
+            MENUITEM "PSG+OPN+THG",             ID_VM_SOUND_TYPE5
+            MENUITEM "PSG+WHG+THG",             ID_VM_SOUND_TYPE6
+            MENUITEM "PSG+OPN+WHG+THG",         ID_VM_SOUND_TYPE7
+            MENUITEM SEPARATOR
+            MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
+            MENUITEM "Play CMT Noise",          ID_VM_SOUND_NOISE_CMT
+            MENUITEM "Play CMT Sound",          ID_VM_SOUND_PLAY_TAPE
+        END
+        POPUP "Display"
+        BEGIN
+            MENUITEM "Scanline",                ID_VM_MONITOR_SCANLINE
+        END
+        POPUP "Printer"
+        BEGIN
+            MENUITEM "Write Printer to File",   ID_VM_PRINTER_TYPE0
+            MENUITEM "Dempa Joystick #1",       ID_VM_PRINTER_TYPE1
+            MENUITEM "Dempa Joystick #2",       ID_VM_PRINTER_TYPE2
+            MENUITEM "None",                    ID_VM_PRINTER_TYPE3
+        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 "Window Stretch 1",        ID_SCREEN_WINDOW_STRETCH
+            MENUITEM "Window Stretch 2",        ID_SCREEN_WINDOW_ASPECT
+            MENUITEM SEPARATOR
+            MENUITEM "Fullscreen Stretch 1",    ID_SCREEN_FULLSCREEN_DOTBYDOT
+            MENUITEM "Fullscreen Stretch 2",    ID_SCREEN_FULLSCREEN_STRETCH
+            MENUITEM "Fullscreen Stretch 3",    ID_SCREEN_FULLSCREEN_ASPECT
+            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 "Filter"
+        BEGIN
+            MENUITEM "RGB Filter",              ID_FILTER_RGB
+            MENUITEM "None",                    ID_FILTER_NONE
+        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
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Image
+//
+
+IDI_BITMAP_ACCESS_OFF   BITMAP  DISCARDABLE     "indicator/access_off.bmp"
+IDI_BITMAP_ACCESS_ON    BITMAP  DISCARDABLE     "indicator/access_on.bmp"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1               ICON    DISCARDABLE     "fm77l4.ico"
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME DIALOG DISCARDABLE  0, 0, 250, 360
+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
+    LTEXT           "Sound Device #4",IDC_VOLUME_CAPTION3,6,96,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L3,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,96,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R3,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,111,175,12
+    LTEXT           "Sound Device #5",IDC_VOLUME_CAPTION4,6,126,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L4,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,126,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R4,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,141,175,12
+    LTEXT           "Sound Device #6",IDC_VOLUME_CAPTION5,6,156,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L5,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,156,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R5,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,171,175,12
+    LTEXT           "Sound Device #7",IDC_VOLUME_CAPTION6,6,186,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L6,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,186,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R6,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,201,175,12
+    LTEXT           "Sound Device #8",IDC_VOLUME_CAPTION7,6,216,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L7,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,216,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R7,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,231,175,12
+    LTEXT           "Sound Device #9",IDC_VOLUME_CAPTION8,6,246,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L8,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,246,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R8,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,261,175,12
+    LTEXT           "Sound Device #10",IDC_VOLUME_CAPTION9,6,276,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L9,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,276,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R9,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,291,175,12
+    LTEXT           "Sound Device #11",IDC_VOLUME_CAPTION10,6,306,60,8
+    CONTROL         "",IDC_VOLUME_PARAM_L10,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,306,175,12
+    CONTROL         "",IDC_VOLUME_PARAM_R10,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,321,175,12
+    DEFPUSHBUTTON   "OK",IDOK,70,340,50,14
+    DEFPUSHBUTTON   "Reset",IDC_VOLUME_RESET,130,340,50,14
+END
+
+IDD_JOYSTICK DIALOG DISCARDABLE  0, 0, 175, 120
+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
+    LTEXT           "Button #6",IDC_JOYSTICK_CAPTION5,6,81,40,8
+    EDITTEXT        IDC_JOYSTICK_PARAM5,50,79,120,14,ES_MULTILINE
+    DEFPUSHBUTTON   "OK",IDOK,35,100,50,14
+    DEFPUSHBUTTON   "Reset",IDC_JOYSTICK_RESET,90,100,50,14
+END
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 0ca23e8..67dc04c 100644 (file)
@@ -151,29 +151,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index b9b7da4..89a4699 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index 5d01d42..83fef03 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index 2f3c517..c2ebc59 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index d2726c9..1785a67 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index 9f1ca7a..77ebb42 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index 060a555..c1f6c95 100644 (file)
@@ -173,29 +173,29 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
     POPUP "HD4"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index b576689..6ba2ccc 100644 (file)
@@ -172,11 +172,6 @@ BEGIN
     END
     POPUP "Device"
     BEGIN
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-        END
         POPUP "Sound"
         BEGIN
             MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
index 4429404..1744bc7 100644 (file)
@@ -202,11 +202,6 @@ BEGIN
             MENUITEM "4MHz",                    ID_VM_CPU_TYPE0
             MENUITEM "6MHz",                    ID_VM_CPU_TYPE1
         END
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-        END
         POPUP "Sound"
         BEGIN
             MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
index 6dd59e5..331e293 100644 (file)
@@ -189,25 +189,20 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
     POPUP "Device"
     BEGIN
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE1
-        END
         POPUP "Sound"
         BEGIN
             MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
index e6ba81d..3480d5a 100644 (file)
@@ -171,6 +171,20 @@ BEGIN
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_FD4
     END
+    POPUP "HD1"
+    BEGIN
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
+        MENUITEM SEPARATOR
+        MENUITEM "Recent",                      ID_RECENT_HD1
+    END
+    POPUP "HD2"
+    BEGIN
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
+        MENUITEM SEPARATOR
+        MENUITEM "Recent",                      ID_RECENT_HD2
+    END
     POPUP "Device"
     BEGIN
         POPUP "Sound"
index 31b78eb..2103386 100644 (file)
@@ -176,11 +176,6 @@ BEGIN
             MENUITEM "MZ-800"                   ID_VM_BOOT_MODE0
             MENUITEM "MZ-700"                   ID_VM_BOOT_MODE1
         END
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-        END
         POPUP "Sound"
         BEGIN
             MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
index 868d682..1455f89 100644 (file)
@@ -187,11 +187,6 @@ BEGIN
     END
     POPUP "Device"
     BEGIN
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-        END
         POPUP "Option"
         BEGIN
             MENUITEM "PCG-8000",                ID_VM_DIPSWITCH0
index 03a04d7..65c677f 100644 (file)
@@ -194,11 +194,6 @@ BEGIN
             MENUITEM "4MHz",                    ID_VM_CPU_TYPE0
             MENUITEM "6MHz",                    ID_VM_CPU_TYPE1
         END
-        POPUP "Drive"
-        BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-        END
         POPUP "Sound"
         BEGIN
             MENUITEM "Play FDD Noise",          ID_VM_SOUND_NOISE_FDD
index 96af48c..ea5326a 100644 (file)
@@ -151,15 +151,15 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
index a5423f8..3a34792 100644 (file)
@@ -151,15 +151,15 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
index 84634a1..e6e8321 100644 (file)
@@ -151,15 +151,15 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
index f9f240f..8bd3d58 100644 (file)
@@ -151,15 +151,15 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
index 9e084fc..0d69e5e 100644 (file)
@@ -151,15 +151,15 @@ BEGIN
     END
     POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
     POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
index 5bd9407..6073ee1 100644 (file)
@@ -169,31 +169,31 @@ BEGIN
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_TAPE1
     END
-    POPUP "HD1"
+    POPUP "HD0"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
-    POPUP "HD2"
+    POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
-    POPUP "HD3"
+    POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
-    POPUP "HD4"
+    POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index a4da2ec..3dfc328 100644 (file)
@@ -169,41 +169,41 @@ BEGIN
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_TAPE1
     END
-    POPUP "HD1"
+    POPUP "HD0"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
-    POPUP "HD2"
+    POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
-    POPUP "HD3"
+    POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
-    POPUP "HD4"
+    POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
     POPUP "Device"
     BEGIN
-        POPUP "Drive"
+        POPUP "Boot Device"
         BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-            MENUITEM "Floppy Drive 2HD",        ID_VM_DRIVE_TYPE2
+            MENUITEM "5/3-inch 2D",             ID_VM_DRIVE_TYPE0
+            MENUITEM "5/3-inch 2DD",            ID_VM_DRIVE_TYPE1
+            MENUITEM "5/3-inch 2HD",            ID_VM_DRIVE_TYPE2
         END
         POPUP "Keyboard"
         BEGIN
index 7454ba7..0ce4789 100644 (file)
@@ -169,41 +169,41 @@ BEGIN
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_TAPE1
     END
-    POPUP "HD1"
+    POPUP "HD0"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
-    POPUP "HD2"
+    POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
-    POPUP "HD3"
+    POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
-    POPUP "HD4"
+    POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
     POPUP "Device"
     BEGIN
-        POPUP "Drive"
+        POPUP "Boot Device"
         BEGIN
-            MENUITEM "Floppy Drive 2D",         ID_VM_DRIVE_TYPE0
-            MENUITEM "Floppy Drive 2DD",        ID_VM_DRIVE_TYPE1
-            MENUITEM "Floppy Drive 2HD",        ID_VM_DRIVE_TYPE2
+            MENUITEM "5/3-inch 2D",             ID_VM_DRIVE_TYPE0
+            MENUITEM "5/3-inch 2DD",            ID_VM_DRIVE_TYPE1
+            MENUITEM "5/3-inch 2HD",            ID_VM_DRIVE_TYPE2
         END
         POPUP "Keyboard"
         BEGIN
index b1d712c..f1871f7 100644 (file)
@@ -170,31 +170,31 @@ BEGIN
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_TAPE1
     END
-    POPUP "HD1"
+    POPUP "HD0"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD1
-        MENUITEM "Eject",                       ID_CLOSE_HD1
+        MENUITEM "Mount",                       ID_OPEN_HD1
+        MENUITEM "Unmount",                     ID_CLOSE_HD1
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD1
     END
-    POPUP "HD2"
+    POPUP "HD1"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD2
-        MENUITEM "Eject",                       ID_CLOSE_HD2
+        MENUITEM "Mount",                       ID_OPEN_HD2
+        MENUITEM "Unmount",                     ID_CLOSE_HD2
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD2
     END
-    POPUP "HD3"
+    POPUP "HD2"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD3
-        MENUITEM "Eject",                       ID_CLOSE_HD3
+        MENUITEM "Mount",                       ID_OPEN_HD3
+        MENUITEM "Unmount",                     ID_CLOSE_HD3
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD3
     END
-    POPUP "HD4"
+    POPUP "HD3"
     BEGIN
-        MENUITEM "Insert",                      ID_OPEN_HD4
-        MENUITEM "Eject",                       ID_CLOSE_HD4
+        MENUITEM "Mount",                       ID_OPEN_HD4
+        MENUITEM "Unmount",                     ID_CLOSE_HD4
         MENUITEM SEPARATOR
         MENUITEM "Recent",                      ID_RECENT_HD4
     END
index d383d4b..76643b0 100644 (file)
@@ -1,6 +1,6 @@
 message("* vm/common_vm")
 
-SET(THIS_LIB_VERSION 2.0.0)
+SET(THIS_LIB_VERSION 2.1.0)
 
 #include(cotire)
 set(s_vm_common_vm_srcs
index 002b80f..0ca4172 100644 (file)
@@ -25,8 +25,9 @@ typedef struct {
        struct {
                uint32_t addr, mask;
                int status;     // 0 = none, 1 = enabled, other = disabled
+               bool check_point;
        } table[MAX_BREAK_POINTS], stored[MAX_BREAK_POINTS];
-       bool hit;
+       bool hit, restart;
        uint32_t hit_addr;
 } break_point_t;
 
@@ -42,6 +43,7 @@ private:
                                if(addr >= bp->table[i].addr && addr < bp->table[i].addr + length) {
                                        bp->hit = now_suspended = true;
                                        bp->hit_addr = bp->table[i].addr;
+                                       bp->restart = bp->table[i].check_point;
                                        break;
                                }
                        }
@@ -54,6 +56,7 @@ private:
                                if((addr & bp->table[i].mask) == (bp->table[i].addr & bp->table[i].mask)) {
                                        bp->hit = now_suspended = true;
                                        bp->hit_addr = addr;
+                                       bp->restart = bp->table[i].check_point;
                                        break;
                                }
                        }
index 14b96c1..5c20d6b 100644 (file)
@@ -918,7 +918,12 @@ void DISK::save_as_d88(const _TCHAR* file_path)
 bool DISK::get_track(int trk, int side)
 {
        if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
-               if(trk >= 0) trk >>= 1;
+               if(trk >= 0) {
+                       if(trk & 1) {
+                               return false; // unformat
+                       }
+                       trk >>= 1;
+               }
        } else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
                if(trk >= 0) trk <<= 1;
        }
@@ -1074,7 +1079,12 @@ bool DISK::get_track_tmp(int trk, int side)
 bool DISK::make_track(int trk, int side)
 {
        if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
-               if(trk >= 0) trk >>= 1;
+               if(trk >= 0) {
+                       if(trk & 1) {
+                               return false; // unformat
+                       }
+                       trk >>= 1;
+               }
        } else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
                if(trk >= 0) trk <<= 1;
        }
@@ -1179,7 +1189,12 @@ bool DISK::make_track_tmp(int trk, int side)
 bool DISK::get_sector(int trk, int side, int index)
 {
        if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
-               if(trk >= 0) trk >>= 1;
+               if(trk >= 0) {
+                       if(trk & 1) {
+                               return false; // unformat
+                       }
+                       trk >>= 1;
+               }
        } else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
                if(trk >= 0) trk <<= 1;
        }
@@ -1301,7 +1316,12 @@ void DISK::set_data_mark_missing()
 bool DISK::format_track(int trk, int side)
 {
        if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
-               if(trk >= 0) trk >>= 1;
+               if(trk >= 0) {
+                       if(trk & 1) {
+                               return false; // unformat
+                       }
+                       trk >>= 1;
+               }
        } else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
                if(trk >= 0) trk <<= 1;
        }
index 90952fe..803a9f1 100644 (file)
@@ -13,7 +13,7 @@
 # include "mb61vh010.h"
 #endif
 #if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
 #endif
 
 #include "fm7_mainio.h"
index 76792f5..6a25ac9 100644 (file)
@@ -40,7 +40,7 @@
 #include "hd6844.h"
 #endif
 #if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
 #endif
 
 #if defined(_FM8)
index e20cd38..d0786d1 100644 (file)
@@ -9,7 +9,7 @@
 #include "emu.h"
 #include "fm7_display.h"
 #if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
 #endif
 
 
index 4a79828..beab6da 100644 (file)
@@ -71,7 +71,7 @@ uint32_t FLOPPY::read_io8(uint32_t addr)
        case 0x35:
                {
                        uint32_t value = fdsl & 0x3f;
-                       if(d_fdc->media_type(drvsel) == MEDIA_TYPE_2D || d_fdc->media_type(drvsel) == MEDIA_TYPE_2DD) {
+                       if(d_fdc->get_media_type(drvsel) == MEDIA_TYPE_2D || d_fdc->get_media_type(drvsel) == MEDIA_TYPE_2DD) {
                                drvsel |= (drvsel & 2) ? 0x80 : 0x40;
                        }
                        return value;
index 636040f..d39b37a 100644 (file)
@@ -205,11 +205,9 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        }
        decl_state();
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-#ifdef OPEN_HARD_DISK_IN_RESET
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
-#else
-               open_hard_disk_tmp(drv, create_local_path(_T("SCSI%d.DAT"), drv));
-#endif
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
+               }
        }
        if(bios) {
                for(int drv = 0; drv < MAX_DRIVE; drv++) {
@@ -260,17 +258,6 @@ void VM::reset()
        // set devices
        sio_kb->write_signal(SIG_I8251_DSR, 1, 1);
        sio_sub->write_signal(SIG_I8251_DSR, 0, 0);
-       
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       // open/close hard disk images
-       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(hd_file_path[drv][0] != _T('\0')) {
-                       open_hard_disk_tmp(drv, hd_file_path[drv]);
-               } else {
-                       close_hard_disk_tmp(drv);
-               }
-       }
-#endif
 }
 
 void VM::run()
@@ -393,33 +380,21 @@ uint32_t VM::is_floppy_disk_accessed()
 void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               my_tcscpy_s(hd_file_path[drv], _MAX_PATH, file_path);
-#else
-               open_hard_disk_tmp(drv, file_path);
-#endif
+               scsi_hdd[drv]->open(0, file_path, 512);
        }
 }
 
 void VM::close_hard_disk(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               hd_file_path[drv][0] = _T('\0');
-#else
-               close_hard_disk_tmp(drv);
-#endif
+               scsi_hdd[drv]->close(0);
        }
 }
 
 bool VM::is_hard_disk_inserted(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               return (hd_file_path[drv][0] != _T('\0'));
-#else
-               return is_hard_disk_inserted_tmp(drv);
-#endif
+               return scsi_hdd[drv]->mounted(0);
        }
        return false;
 }
@@ -427,36 +402,15 @@ bool VM::is_hard_disk_inserted(int drv)
 uint32_t VM::is_hard_disk_accessed()
 {
        uint32_t status = 0;
+       
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(scsi_hdd[drv]->get_disk_handler(0)->accessed()) {
+               if(scsi_hdd[drv]->accessed(0)) {
                        status |= 1 << drv;
                }
        }
        return status;
 }
 
-void VM::open_hard_disk_tmp(int drv, const _TCHAR* file_path)
-{
-       if(drv < USE_HARD_DISK) {
-               scsi_hdd[drv]->get_disk_handler(0)->open(file_path, 512);
-       }
-}
-
-void VM::close_hard_disk_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               scsi_hdd[drv]->get_disk_handler(0)->close();
-       }
-}
-
-bool VM::is_hard_disk_inserted_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               return scsi_hdd[drv]->get_disk_handler(0)->mounted();
-       }
-       return false;
-}
-
 bool VM::is_frame_skippable()
 {
        return event->is_frame_skippable();
index e68bab4..040a954 100644 (file)
@@ -38,7 +38,6 @@
 // device informations for win32
 #define USE_FLOPPY_DISK                2
 #define USE_HARD_DISK          7
-#define OPEN_HARD_DISK_IN_RESET
 #define NOTIFY_KEY_DOWN
 #define USE_SHIFT_NUMPAD_KEY
 #define USE_ALT_F10_KEY
@@ -128,13 +127,6 @@ protected:
        SYSTEM* system;
        TIMER* timer;
        
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       _TCHAR hd_file_path[USE_HARD_DISK][_MAX_PATH];
-#endif
-       void open_hard_disk_tmp(int drv, const _TCHAR* file_path);
-       void close_hard_disk_tmp(int drv);
-       bool is_hard_disk_inserted_tmp(int drv);
-       
 public:
        // ----------------------------------------
        // initialize
index 008ef44..cfc16f7 100644 (file)
@@ -274,7 +274,7 @@ void BIOS::reset()
        }
        for(int i = 0; i < USE_HARD_DISK; i++) {
                if(harddisk[i] != NULL && harddisk[i]->mounted()) {
-                       scsi_blocks[i] = harddisk[i]->cylinders * harddisk[i]->surfaces * harddisk[i]->sectors * harddisk[i]->sector_size / BLOCK_SIZE;
+                       scsi_blocks[i] = harddisk[i]->sector_size * harddisk[i]->sector_num / BLOCK_SIZE;
                } else {
                        scsi_blocks[i] = 0;
                }
index c96d49d..315b3ab 100644 (file)
@@ -323,11 +323,9 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        }
 
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-#ifdef OPEN_HARD_DISK_IN_RESET
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
-#else
-               open_hard_disk_tmp(drv, create_local_path(_T("SCSI%d.DAT"), drv));
-#endif
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
+               }
        }
        if(bios) {
                for(int drv = 0; drv < MAX_DRIVE; drv++) {
@@ -375,17 +373,6 @@ void VM::reset()
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->reset();
        }
-       
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       // open/close hard disk images
-       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(hd_file_path[drv][0] != _T('\0')) {
-                       open_hard_disk_tmp(drv, hd_file_path[drv]);
-               } else {
-                       close_hard_disk_tmp(drv);
-               }
-       }
-#endif
 }
 
 void VM::run()
@@ -508,33 +495,21 @@ uint32_t VM::is_floppy_disk_accessed()
 void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               my_tcscpy_s(hd_file_path[drv], _MAX_PATH, file_path);
-#else
-               open_hard_disk_tmp(drv, file_path);
-#endif
+               scsi_hdd[drv]->open(0, file_path, 512);
        }
 }
 
 void VM::close_hard_disk(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               hd_file_path[drv][0] = _T('\0');
-#else
-               close_hard_disk_tmp(drv);
-#endif
+               scsi_hdd[drv]->close(0);
        }
 }
 
 bool VM::is_hard_disk_inserted(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               return (hd_file_path[drv][0] != _T('\0'));
-#else
-               return is_hard_disk_inserted_tmp(drv);
-#endif
+               return scsi_hdd[drv]->mounted(0);
        }
        return false;
 }
@@ -542,36 +517,15 @@ bool VM::is_hard_disk_inserted(int drv)
 uint32_t VM::is_hard_disk_accessed()
 {
        uint32_t status = 0;
+       
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(scsi_hdd[drv]->get_disk_handler(0)->accessed()) {
+               if(scsi_hdd[drv]->accessed(0)) {
                        status |= 1 << drv;
                }
        }
        return status;
 }
 
-void VM::open_hard_disk_tmp(int drv, const _TCHAR* file_path)
-{
-       if(drv < USE_HARD_DISK) {
-               scsi_hdd[drv]->get_disk_handler(0)->open(file_path, 512);
-       }
-}
-
-void VM::close_hard_disk_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               scsi_hdd[drv]->get_disk_handler(0)->close();
-       }
-}
-
-bool VM::is_hard_disk_inserted_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               return scsi_hdd[drv]->get_disk_handler(0)->mounted();
-       }
-       return false;
-}
-
 bool VM::is_frame_skippable()
 {
        return event->is_frame_skippable();
index 80872be..90fb1ee 100644 (file)
@@ -78,7 +78,6 @@
 #define USE_CPU_TYPE           2
 #define USE_FLOPPY_DISK                4
 #define USE_HARD_DISK          7
-#define OPEN_HARD_DISK_IN_RESET
 #define NOTIFY_KEY_DOWN
 #define USE_SHIFT_NUMPAD_KEY
 #define USE_ALT_F10_KEY
@@ -179,13 +178,6 @@ protected:
 //     SERIAL* serial;
        TIMER* timer;
        
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       _TCHAR hd_file_path[USE_HARD_DISK][_MAX_PATH];
-#endif
-       void open_hard_disk_tmp(int drv, const _TCHAR* file_path);
-       void close_hard_disk_tmp(int drv);
-       bool is_hard_disk_inserted_tmp(int drv);
-       
 public:
        // ----------------------------------------
        // initialize
index 8f7b760..75f827e 100644 (file)
 #include "harddisk.h"
 #include "../fileio.h"
 
-void HARDDISK::open(const _TCHAR* file_path)
-{
-       open(file_path, 256);
-}
-
 void HARDDISK::open(const _TCHAR* file_path, int default_sector_size)
 {
        uint8_t header[512];
@@ -27,9 +22,13 @@ void HARDDISK::open(const _TCHAR* file_path, int default_sector_size)
                
                if(fio->Fopen(file_path, FILEIO_READ_WRITE_BINARY)) {
                        // from NP2 sxsihdd.c
+                       const char sig_vhd[8] = "VHD1.00";
+                       const char sig_nhd[15] = "T98HDDIMAGE.R0";
+                       
+                       fio->Fread(header, 256, 1);
+                       
                        if(check_file_extension(file_path, _T(".thd"))) {
                                // T98
-                               fio->Fread(header, 256, 1);
 /*
                                typedef struct thd_header_s {
                                        int16_t cylinders;
@@ -37,14 +36,13 @@ void HARDDISK::open(const _TCHAR* file_path, int default_sector_size)
 */
                                header_size = 256;
                                tmp.read_2bytes_le_from(header + 0);
-                               cylinders = tmp.sd;
+                               int cylinders = tmp.sd;
                                surfaces = 8;
-                               sectors = 33;
+                               int sectors = 33;
                                sector_size = 256;
-
-                       } else if(check_file_extension(file_path, _T(".nhd"))) {
+                               sector_num = cylinders * surfaces * sectors;
+                       } else if(check_file_extension(file_path, _T(".nhd")) && memcmp(header, sig_nhd, 15) == 0) {
                                // T98Next
-                               fio->Fread(header, 256, 1);
 /*
                                typedef struct nhd_header_s {
                                        char sig[16];
@@ -60,16 +58,16 @@ void HARDDISK::open(const _TCHAR* file_path, int default_sector_size)
                                tmp.read_4bytes_le_from(header + 272);
                                header_size = tmp.sd;
                                tmp.read_4bytes_le_from(header + 276);
-                               cylinders = tmp.sd;
+                               int cylinders = tmp.sd;
                                tmp.read_2bytes_le_from(header + 280);
                                surfaces = tmp.sd;
                                tmp.read_2bytes_le_from(header + 282);
-                               sectors = tmp.sd;
+                               int sectors = tmp.sd;
                                tmp.read_2bytes_le_from(header + 284);
                                sector_size = tmp.sd;
+                               sector_num = cylinders * surfaces * sectors;
                        } else if(check_file_extension(file_path, _T(".hdi"))) {
                                // ANEX86
-                               fio->Fread(header, 32, 1);
 /*
                                typedef struct hdi_header_s {
                                        int32_t dummy;          // + 0
@@ -87,47 +85,48 @@ void HARDDISK::open(const _TCHAR* file_path, int default_sector_size)
                                tmp.read_4bytes_le_from(header + 16);
                                sector_size = tmp.sd;
                                tmp.read_4bytes_le_from(header + 20);
-                               sectors = tmp.sd;
+                               int sectors = tmp.sd;
                                tmp.read_4bytes_le_from(header + 24);
                                surfaces = tmp.sd;
                                tmp.read_4bytes_le_from(header + 28);
-                               cylinders = tmp.sd;
+                               int cylinders = tmp.sd;
+                               sector_num = cylinders * surfaces * sectors;
+                       } else if(check_file_extension(file_path, _T(".hdd")) && memcmp(header, sig_vhd, 5) == 0) {
+                               // Virtual98
+/*
+                               typedef struct {
+                                       char    sig[3];         // +  0
+                                       char    ver[4];         // +  3
+                                       char    delimita;       // +  7
+                                       char    comment[128];   // +  8
+                                       uint8_t pad1[4];        // +136
+                                       int16_t mbsize;         // +140
+                                       int16_t sectorsize;     // +142
+                                       uint8_t sectors;        // +144
+                                       uint8_t surfaces;       // +145
+                                       int16_t cylinders;      // +146
+                                       int32_t totals;         // +148
+                                       uint8_t pad2[0x44];     // +152
+                               } virtual98_header_t;
+*/
+                               header_size = 288;
+                               tmp.read_2bytes_le_from(header + 142);
+                               sector_size = tmp.sd;
+//                             int sectors = header[144];
+                               surfaces = header[145];
+//                             tmp.read_2bytes_le_from(header + 146);
+//                             int cylinders = tmp.sd;
+                               tmp.read_4bytes_le_from(header + 148);
+                               sector_num = tmp.sd;
+//                             sector_num = cylinders * surfaces * sectors;
                        } else {
                                // solid
-                               typedef struct {
-                                       int sectors, surfaces, cylinders, sector_size;
-                               } hd_format_t;
-                               long length = fio->FileLength();
-                               
                                header_size = 0;
-                               cylinders = (int)(length / (8 * 33 * default_sector_size));
-                               surfaces = 8;
-                               sectors = 33;
+                               // sectors = 33, surfaces = 4, cylinders = 153, sector_size = 256       // 5MB
+                               // sectors = 33, surfaces = 4, cylinders = 310, sector_size = 256       // 10MB
+                               surfaces = (default_sector_size == 256 && fio->FileLength() <= 33 * 4 * 310 * 256) ? 4 : 8;
                                sector_size = default_sector_size;
-                               
-                               if(default_sector_size == 256) {
-                                       static const hd_format_t hd_formats[] = {
-                                               {33, 4, 153, 256},      // 5MB
-                                               {33, 4, 310, 256},      // 10MB
-                                               {33, 6, 310, 256},      // 15MB
-                                               {33, 8, 310, 256},      // 20MB
-                                               {33, 4, 615, 256},      // 20MB (not used!)
-                                               {33, 6, 615, 256},      // 30MB
-                                               {33, 8, 615, 256},      // 40MB
-                                       };
-                                       for(int i = 0; i < (int)array_length(hd_formats); i++) {
-                                               const hd_format_t *p = &hd_formats[i];
-                                               if(length == p->sectors * p->surfaces * p->cylinders * p->sector_size) {
-                                                       cylinders = p->cylinders;
-                                                       surfaces = p->surfaces;
-                                                       sectors = p->sectors;
-                                                       sector_size = p->sector_size;
-                                                       break;
-                                               }
-                                       }
-                               } else if(default_sector_size == 512) {
-                                       
-                               }
+                               sector_num = fio->FileLength() / sector_size;
                        }
                }
        }
@@ -203,10 +202,11 @@ void HARDDISK::save_state(FILEIO* state_fio)
                state_fio->FputInt32(0);
        }
        state_fio->FputInt32(header_size);
-       state_fio->FputInt32(cylinders);
+//     state_fio->FputInt32(cylinders);
        state_fio->FputInt32(surfaces);
-       state_fio->FputInt32(sectors);
+//     state_fio->FputInt32(sectors);
        state_fio->FputInt32(sector_size);
+       state_fio->FputInt32(sector_num);
 }
 
 bool HARDDISK::load_state(FILEIO* state_fio)
@@ -247,10 +247,11 @@ bool HARDDISK::load_state(FILEIO* state_fio)
                }
        }
        header_size = state_fio->FgetInt32();
-       cylinders = state_fio->FgetInt32();
+//     cylinders = state_fio->FgetInt32();
        surfaces = state_fio->FgetInt32();
-       sectors = state_fio->FgetInt32();
+//     sectors = state_fio->FgetInt32();
        sector_size = state_fio->FgetInt32();
+       sector_num = state_fio->FgetInt32();
        return true;
 }
 */
index d084c13..7f89b1d 100644 (file)
@@ -39,7 +39,6 @@ public:
                close();
        }
        
-       void open(const _TCHAR* file_path);
        void open(const _TCHAR* file_path, int default_sector_size);
        void close();
        bool mounted();
@@ -47,10 +46,11 @@ public:
        bool read_buffer(long position, int length, uint8_t *buffer);
        bool write_buffer(long position, int length, uint8_t *buffer);
        
-       int cylinders;
+//     int cylinders;
        int surfaces;
-       int sectors;
+//     int sectors;
        int sector_size;
+       int sector_num;
        int drive_num;
        bool access;
        
index 3a0d939..da352f0 100644 (file)
@@ -154,8 +154,7 @@ void HD146818P::event_callback(int event_id, int err)
                update_intr();
        } else if(event_id == EVENT_SQW) {
                // periodic interrupt
-               sqw = !sqw;
-               if(sqw) {  // OK? 20180516 K.Ohta
+               if((sqw = !sqw) == true) {
                        regs[0x0c] |= 0x40;
                        update_intr();
                }
index 7f0c832..51f79a8 100644 (file)
@@ -137,7 +137,7 @@ void IO::write_port8(uint32_t addr, uint32_t data, bool is_dma)
        if(!wr_table[laddr].dev->this_device_id && !wr_table[laddr].is_flipflop) {
                this->out_debug_log(_T("UNKNOWN:\t"));
        }
-       this->out_debug_log(_T("%06x\tOUT8\t%04x,%02x\n"), get_cpu_pc(cpu_index), addr, data);
+       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) {
                rd_table[laddr].value = data & 0xff;
@@ -157,7 +157,7 @@ uint32_t IO::read_port8(uint32_t addr, bool is_dma)
        if(!rd_table[laddr].dev->this_device_id && !rd_table[laddr].value_registered) {
                this->out_debug_log(_T("UNKNOWN:\t"));
        }
-       this->out_debug_log(_T("%06x\tIN8\t%04x = %02x\n"), get_cpu_pc(cpu_index), addr, val);
+       this->out_debug_log(_T("%06x\tIN8\t%04x = %02x\n"), get_cpu_pc(cpu_index), addr, val & 0xff);
 #endif
        return val & 0xff;
 }
@@ -170,7 +170,7 @@ void IO::write_port16(uint32_t addr, uint32_t data, bool is_dma)
        if(!wr_table[laddr].dev->this_device_id && !wr_table[laddr].is_flipflop) {
                this->out_debug_log(_T("UNKNOWN:\t"));
        }
-       this->out_debug_log(_T("%06x\tOUT16\t%04x,%04x\n"), get_cpu_pc(cpu_index), addr, data);
+       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) {
                rd_table[laddr].value = data & 0xffff;
@@ -190,7 +190,7 @@ uint32_t IO::read_port16(uint32_t addr, bool is_dma)
        if(!rd_table[laddr].dev->this_device_id && !rd_table[laddr].value_registered) {
                this->out_debug_log(_T("UNKNOWN:\t"));
        }
-       this->out_debug_log(_T("%06x\tIN16\t%04x = %04x\n"), get_cpu_pc(cpu_index), addr, val);
+       this->out_debug_log(_T("%06x\tIN16\t%04x = %04x\n"), get_cpu_pc(cpu_index), addr, val & 0xffff);
 #endif
        return val & 0xffff;
 }
index 9e6fbc3..4017b27 100644 (file)
@@ -1905,7 +1905,7 @@ bool MB8877::is_disk_protected(int drv)
        return false;
 }
 
-uint8_t MB8877::media_type(int drv)
+uint8_t MB8877::get_media_type(int drv)
 {
        if(drv < _max_drive) {
                if(disk[drv]->inserted) {
index 448af6c..4fb940f 100644 (file)
@@ -236,7 +236,7 @@ public:
        bool is_disk_inserted(int drv);
        void is_disk_protected(int drv, bool value);
        bool is_disk_protected(int drv);
-       uint8_t media_type(int drv);
+       uint8_t get_media_type(int drv);
        void set_drive_type(int drv, uint8_t type);
        uint8_t get_drive_type(int drv);
        void set_drive_rpm(int drv, int rpm);
index d7e86ea..11f5c30 100644 (file)
@@ -80,7 +80,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        pcm = new PCM1BIT(this, emu);
        rtc = new RP5C01(this, emu);    // RP-5C15
        sasi_host = new SCSI_HOST(this, emu);
-       sasi_hdd = new SCSI_HDD(this, emu);
+       sasi_hdd = new SASI_HDD(this, emu);
        sasi_hdd->set_device_name(_T("SASI Hard Disk Drive"));
        sasi_hdd->scsi_id = 0;
        sasi_hdd->bytes_per_sec = 32 * 1024; // 32KB/s
@@ -242,12 +242,17 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
                device->initialize();
        }
 
+       for(int drv = 0; drv < MAX_DRIVE; drv++) {
+//             if(config.drive_type) {
+//                     fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+//             } else {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+//             }
+       }
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
-#else
-               open_hard_disk_tmp(drv, create_local_path(_T("SASI%d.DAT"), drv));
-#endif
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
+               }
        }
        monitor_type = config.monitor_type;
        decl_state();
@@ -284,27 +289,9 @@ void VM::reset()
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->reset();
        }
-       for(int i = 0; i < MAX_DRIVE; i++) {
-               if(config.drive_type) {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2D);
-               } else {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2DD);
-               }
-       }
        
        // set initial port status
        opn->write_signal(SIG_YM2203_PORT_B, (monitor_type & 2) ? 0x77 : 0x37, 0xff);
-       
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       // open/close hard disk images
-       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(hd_file_path[drv][0] != _T('\0')) {
-                       open_hard_disk_tmp(drv, hd_file_path[drv]);
-               } else {
-                       close_hard_disk_tmp(drv);
-               }
-       }
-#endif
 }
 
 void VM::special_reset()
@@ -445,6 +432,16 @@ void VM::inc_socket_recv_buffer_ptr(int ch, int size)
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
 }
 
 void VM::close_floppy_disk(int drv)
@@ -475,33 +472,21 @@ uint32_t VM::is_floppy_disk_accessed()
 void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               my_tcscpy_s(hd_file_path[drv], _MAX_PATH, file_path);
-#else
-               open_hard_disk_tmp(drv, file_path);
-#endif
+               sasi_hdd->open(drv, file_path, 256);
        }
 }
 
 void VM::close_hard_disk(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               hd_file_path[drv][0] = _T('\0');
-#else
-               close_hard_disk_tmp(drv);
-#endif
+               sasi_hdd->close(drv);
        }
 }
 
 bool VM::is_hard_disk_inserted(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               return (hd_file_path[drv][0] != _T('\0'));
-#else
-               return is_hard_disk_inserted_tmp(drv);
-#endif
+               return sasi_hdd->mounted(drv);
        }
        return false;
 }
@@ -511,36 +496,13 @@ uint32_t VM::is_hard_disk_accessed()
        uint32_t status = 0;
        
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(sasi_hdd->get_disk_handler(drv)->accessed()) {
+               if(sasi_hdd->accessed(drv)) {
                        status |= 1 << drv;
                }
        }
        return status;
 }
 
-void VM::open_hard_disk_tmp(int drv, const _TCHAR* file_path)
-{
-       if(drv < USE_HARD_DISK) {
-               sasi_hdd->get_disk_handler(drv)->open(file_path);
-       }
-}
-
-void VM::close_hard_disk_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               sasi_hdd->get_disk_handler(drv)->close();
-       }
-}
-
-bool VM::is_hard_disk_inserted_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               return sasi_hdd->get_disk_handler(drv)->mounted();
-       }
-       return false;
-}
-
-
 void VM::play_tape(int drv, const _TCHAR* file_path)
 {
        bool value = drec->play_tape(file_path);
index 21a26c8..52a8c9d 100644 (file)
 
 // device informations for win32
 #define USE_SPECIAL_RESET
-#define USE_DRIVE_TYPE         2
 #define USE_FLOPPY_DISK                4
 #define USE_TAPE               1
 #define USE_TAPE_BUTTON
 #define USE_HARD_DISK          2
-#define OPEN_HARD_DISK_IN_RESET
 #define USE_SOCKET
 #define USE_SHIFT_NUMPAD_KEY
 #define USE_ALT_F10_KEY
@@ -84,7 +82,7 @@ class IO;
 class MB8877;
 class PCM1BIT;
 class RP5C01;
-class SCSI_HDD;
+class SASI_HDD;
 class SCSI_HOST;
 class W3100A;
 class YM2203;
@@ -125,7 +123,7 @@ protected:
        MB8877* fdc;
        PCM1BIT* pcm;
        RP5C01* rtc;
-       SCSI_HDD* sasi_hdd;
+       SASI_HDD* sasi_hdd;
        SCSI_HOST* sasi_host;
        W3100A* w3100a;
        YM2203* opn;
@@ -150,13 +148,6 @@ protected:
        SERIAL* serial;
        TIMER* timer;
        
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       _TCHAR hd_file_path[2][_MAX_PATH];
-#endif
-       void open_hard_disk_tmp(int drv, const _TCHAR* file_path);
-       void close_hard_disk_tmp(int drv);
-       bool is_hard_disk_inserted_tmp(int drv);
-       
        // monitor type cache
        int monitor_type;
        
index 9157617..e1a5a2a 100644 (file)
@@ -270,6 +270,13 @@ VM::~VM()
                delete device;
                device = next_device;
        }
+       for(int drv = 0; drv < MAX_DRIVE; drv++) {
+//             if(config.drive_type) {
+//                     fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+//             } else {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+//             }
+       }
 }
 
 DEVICE* VM::get_device(int id)
@@ -292,13 +299,6 @@ void VM::reset()
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->reset();
        }
-       for(int i = 0; i < MAX_DRIVE; i++) {
-               if(config.drive_type) {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2DD);
-               } else {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2D);
-               }
-       }
 }
 
 void VM::special_reset()
@@ -398,6 +398,16 @@ void VM::set_sound_device_volume(int ch, int decibel_l, int decibel_r)
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
 }
 
 void VM::close_floppy_disk(int drv)
index 219e2ca..c7382d4 100644 (file)
@@ -52,7 +52,6 @@
 // device informations for win32
 #define USE_SPECIAL_RESET
 #define USE_CPU_TYPE           2
-#define USE_DRIVE_TYPE         2
 #define USE_FLOPPY_DISK                4
 #ifdef SUPPORT_QUICK_DISK
 #define USE_QUICK_DISK         1
index a84bc79..e9636d9 100644 (file)
@@ -37,7 +37,11 @@ void FLOPPY::write_io8(uint32_t addr, uint32_t data)
                        if(data & 1) {
                                d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
                        } else {
-                               d_fdc->set_drive_type(i, DRIVE_TYPE_2DD);
+                               if(d_fdc->get_media_type(i) == MEDIA_TYPE_2DD) {
+                                       d_fdc->set_drive_type(i, DRIVE_TYPE_2DD);
+                               } else {
+                                       d_fdc->set_drive_type(i, DRIVE_TYPE_2D);
+                               }
                        }
                }
                break;
index 7e10273..a37023c 100644 (file)
@@ -12,6 +12,8 @@
 #include "../device.h"
 #include "../event.h"
 
+#include "../disk.h"
+#include "../harddisk.h"
 #include "../i8253.h"
 #include "../i8255.h"
 #include "../i8259.h"
@@ -25,7 +27,8 @@
 //#include "../pcpr201.h"
 #include "../prnfile.h"
 #include "../rp5c01.h"
-//#include "../sasi.h"
+#include "../scsi_hdd.h"
+#include "../scsi_host.h"
 #include "../upd71071.h"
 #include "../ym2203.h"
 #include "../z80pio.h"
@@ -43,6 +46,7 @@
 #include "mouse.h"
 #include "printer.h"
 #include "reset.h"
+#include "sasi.h"
 #include "serial.h"
 #include "sysport.h"
 
@@ -72,7 +76,16 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
 
        pcm = new PCM1BIT(this, emu);
        rtc = new RP5C01(this, emu);    // RP-5C15
-//     sasi = new SASI(this, emu);
+       sasi_host = new SCSI_HOST(this, emu);
+       for(int i = 0; i < USE_HARD_DISK; i++) {
+               sasi_hdd[i] = new SASI_HDD(this, emu);
+               sasi_hdd[i]->set_device_name(_T("SASI Hard Disk Drive #%d"), i + 1);
+               sasi_hdd[i]->scsi_id = i;
+               sasi_hdd[i]->set_disk_handler(0, new HARDDISK(emu));
+               sasi_hdd[i]->set_context_interface(sasi_host);
+               sasi_hdd[i]->bytes_per_sec = 32 * 1024; // 32KB/s
+               sasi_host->set_context_target(sasi_hdd[i]);
+       }
        dma = new UPD71071(this, emu);
        opn = new YM2203(this, emu);
        pio1 = new Z80PIO(this, emu);
@@ -86,6 +99,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        mouse = new MOUSE(this, emu);
        printer = new PRINTER(this, emu);
        rst = new RESET(this, emu);
+       sasi = new SASI(this, emu);
        serial = new SERIAL(this, emu);
        sysport = new SYSPORT(this, emu);
        
@@ -116,10 +130,10 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        not_busy->set_context_out(pic, SIG_I8259_CHIP1 | SIG_I8259_IR1, 1);
        rtc->set_context_alarm(pic, SIG_I8259_CHIP1 | SIG_I8259_IR2, 1);
        rtc->set_context_pulse(opn, SIG_YM2203_PORT_B, 8);
-//     sasi->set_context_drq(dma, SIG_UPD71071_CH0, 1);
-//     sasi->set_context_irq(pic, SIG_I8259_CHIP0 | SIG_I8259_IR4, 1);
+       sasi_host->set_context_irq(sasi, SIG_SASI_IRQ, 1);
+       sasi_host->set_context_drq(sasi, SIG_SASI_DRQ, 1);
        dma->set_context_memory(memory);
-//     dma->set_context_ch0(sasi);
+       dma->set_context_ch0(sasi);
        dma->set_context_ch1(fdc);
        dma->set_context_tc(pic, SIG_I8259_CHIP0 | SIG_I8259_IR3, 1);
        opn->set_context_irq(pic, SIG_I8259_CHIP1 | SIG_I8259_IR7, 1);
@@ -157,6 +171,9 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        } else {
                printer->set_context_prn(dummy);
        }
+       sasi->set_context_host(sasi_host);
+       sasi->set_context_dma(dma);
+       sasi->set_context_pic(pic);
        serial->set_context_sio(sio);
        sysport->set_context_pit(pit);
        sysport->set_context_sio(sio);
@@ -185,7 +202,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        for(uint32_t p = 0xae; p <= 0x1fae; p += 0x100) {
                io->set_iomap_single_w(p, crtc);
        }
-//     io->set_iomap_single_rw(0xaf, sasi);
+       io->set_iomap_range_rw(0xa4, 0xa5, sasi);
        io->set_iomap_range_rw(0xb0, 0xb3, serial);
        io->set_iomap_single_r(0xbe, sysport);
        io->set_iomap_range_rw(0xc8, 0xc9, opn);
@@ -231,6 +248,11 @@ VM::~VM()
                delete device;
                device = next_device;
        }
+       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
+               }
+       }
 }
 
 DEVICE* VM::get_device(int id)
@@ -344,6 +366,16 @@ void VM::set_sound_device_volume(int ch, int decibel_l, int decibel_r)
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
 }
 
 void VM::close_floppy_disk(int drv)
@@ -371,6 +403,40 @@ uint32_t VM::is_floppy_disk_accessed()
        return fdc->read_signal(0);
 }
 
+void VM::open_hard_disk(int drv, const _TCHAR* file_path)
+{
+       if(drv < USE_HARD_DISK) {
+               sasi_hdd[drv]->open(0, file_path, 1024);
+       }
+}
+
+void VM::close_hard_disk(int drv)
+{
+       if(drv < USE_HARD_DISK) {
+               sasi_hdd[drv]->close(0);
+       }
+}
+
+bool VM::is_hard_disk_inserted(int drv)
+{
+       if(drv < USE_HARD_DISK) {
+               return sasi_hdd[drv]->mounted(0);
+       }
+       return false;
+}
+
+uint32_t VM::is_hard_disk_accessed()
+{
+       uint32_t status = 0;
+       
+       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
+               if(sasi_hdd[drv]->accessed(0)) {
+                       status |= 1 << drv;
+               }
+       }
+       return status;
+}
+
 bool VM::is_frame_skippable()
 {
        return event->is_frame_skippable();
@@ -383,7 +449,7 @@ void VM::update_config()
        }
 }
 
-#define STATE_VERSION  4
+#define STATE_VERSION  5
 
 #include "../../statesub.h"
 #include "../../qt/gui/csp_logger.h"
index 26cb874..a4027b6 100644 (file)
 #define SINGLE_MODE_DMA
 #define HAS_RP5C15
 #define IO_ADDR_MAX            0x8000
+#define SCSI_HOST_AUTO_ACK
 
 // device informations for win32
 #define USE_FLOPPY_DISK                4
+#define USE_HARD_DISK          2
 #define USE_SHIFT_NUMPAD_KEY
 #define USE_ALT_F10_KEY
 #define USE_AUTO_KEY           5
@@ -69,7 +71,8 @@ class MB8877;
 class NOT;
 class PCM1BIT;
 class RP5C01;
-//class SASI;
+class SASI_HDD;
+class SCSI_HOST;
 class UPD71071;
 class YM2203;
 class Z80PIO;
@@ -83,6 +86,7 @@ class MEMORY;
 class MOUSE;
 class PRINTER;
 class RESET;
+class SASI;
 class SERIAL;
 class SYSPORT;
 
@@ -104,7 +108,8 @@ protected:
        NOT* not_busy;
        PCM1BIT* pcm;
        RP5C01* rtc;
-//     SASI* sasi;
+       SASI_HDD* sasi_hdd[4];
+       SCSI_HOST* sasi_host;
        UPD71071* dma;
        YM2203* opn;
        Z80PIO* pio1;
@@ -118,6 +123,7 @@ protected:
        MOUSE* mouse;
        PRINTER* printer;
        RESET* rst;
+       SASI* sasi;
        SERIAL* serial;
        SYSPORT* sysport;
        
@@ -161,6 +167,10 @@ public:
        void is_floppy_disk_protected(int drv, bool value);
        bool is_floppy_disk_protected(int drv);
        uint32_t is_floppy_disk_accessed();
+       void open_hard_disk(int drv, const _TCHAR* file_path);
+       void close_hard_disk(int drv);
+       bool is_hard_disk_inserted(int drv);
+       uint32_t is_hard_disk_accessed();
        bool is_frame_skippable();
        
        void update_config();
diff --git a/source/src/vm/mz2800/sasi.cpp b/source/src/vm/mz2800/sasi.cpp
new file mode 100644 (file)
index 0000000..e501636
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+       SHARP MZ-2800 Emulator 'EmuZ-2800'
+
+       Author : Takeda.Toshiya
+       Date   : 2018.05.25 -
+
+       [ SASI I/F ]
+*/
+
+#include "sasi.h"
+#include "../i8259.h"
+#include "../upd71071.h"
+#include "../scsi_host.h"
+
+#define STATUS_INT     0x01
+#define STATUS_IXO     0x04
+#define STATUS_CXD     0x08
+#define STATUS_MSG     0x10
+#define STATUS_BSY     0x20
+#define STATUS_ACK     0x40
+#define STATUS_REQ     0x80
+
+void SASI::reset()
+{
+       control = 0x00;
+       irq_status = drq_status = false;
+}
+
+void SASI::write_io8(uint32_t addr, uint32_t data)
+{
+       switch(addr & 0xff) {
+       case 0xa4:
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] out %04X %02X\n"), addr, data);
+               #endif
+//             if(!d_host->read_signal(SIG_SCSI_IO)) {
+                       d_host->write_dma_io8(addr, data);
+//             }
+               break;
+       case 0xa5:
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] out %04X %02X\n"), addr, data);
+               #endif
+               if((control & 0x20) != (data & 0x20)) {
+                       d_host->write_signal(SIG_SCSI_SEL, data, 0x20);
+               }
+               if((control & 0x08) != (data & 0x08)) {
+                       d_host->write_signal(SIG_SCSI_RST, data, 0x08);
+               }
+               control = data;
+               break;
+       }
+}
+
+uint32_t SASI::read_io8(uint32_t addr)
+{
+       uint32_t val = 0;
+       
+       switch(addr & 0xff) {
+       case 0xa4:
+//             if(d_host->read_signal(SIG_SCSI_IO)) {
+                       val = d_host->read_dma_io8(addr);
+//             }
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] in  %04X %02X\n"), addr, val);
+               #endif
+               return val;
+       case 0xa5:
+               val = (d_host->read_signal(SIG_SCSI_REQ) ? STATUS_REQ : 0) |
+//                   (d_host->read_signal(SIG_SCSI_ACK) ? STATUS_ACK : 0) |
+                     (d_host->read_signal(SIG_SCSI_BSY) ? STATUS_BSY : 0) |
+                     (d_host->read_signal(SIG_SCSI_MSG) ? STATUS_MSG : 0) |
+                     (d_host->read_signal(SIG_SCSI_CD ) ? STATUS_CXD : 0) |
+                     (d_host->read_signal(SIG_SCSI_IO ) ? STATUS_IXO : 0) |
+                     (irq_status                        ? STATUS_INT : 0);
+               irq_status = false;
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] in  %04X %02X (REQ=%d,BSY=%d,MSG=%d,CxD=%d,IxO=%d)\n"), addr, val,
+                               (val & STATUS_REQ) ? 1 : 0,
+                               (val & STATUS_BSY) ? 1 : 0,
+                               (val & STATUS_MSG) ? 1 : 0,
+                               (val & STATUS_CXD) ? 1 : 0,
+                               (val & STATUS_IXO) ? 1 : 0);
+               #endif
+               return val | 0x02;
+       }
+       return 0xff;
+}
+
+void SASI::write_dma_io8(uint32_t addr, uint32_t data)
+{
+       write_io8(0xa4, data);
+}
+
+uint32_t SASI::read_dma_io8(uint32_t addr)
+{
+       return read_io8(0xa4);
+}
+
+void SASI::write_signal(int id, uint32_t data, uint32_t mask)
+{
+       switch(id) {
+       case SIG_SASI_IRQ:
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] IRQ=%d\n"), (data & mask) ? 1 : 0);
+               #endif
+               if(control & 0x01) {
+                       d_pic->write_signal(SIG_I8259_CHIP0 | SIG_I8259_IR4, data, mask);
+               }
+               irq_status = ((data & mask) != 0);
+               break;
+       case SIG_SASI_DRQ:
+               #ifdef _SCSI_DEBUG_LOG
+                       this->out_debug_log(_T("[SASI] DRQ=%d\n"), (data & mask) ? 1 : 0);
+               #endif
+               if(control & 0x02) {
+                       d_dma->write_signal(SIG_UPD71071_CH0, data, mask);
+               }
+               drq_status = ((data & mask) != 0);
+               break;
+       }
+}
+
+#define STATE_VERSION  2
+
+void SASI::save_state(FILEIO* state_fio)
+{
+       state_fio->FputUint32(STATE_VERSION);
+       state_fio->FputInt32(this_device_id);
+       
+       state_fio->FputUint8(control);
+       state_fio->FputBool(irq_status);
+       state_fio->FputBool(drq_status);
+}
+
+bool SASI::load_state(FILEIO* state_fio)
+{
+       if(state_fio->FgetUint32() != STATE_VERSION) {
+               return false;
+       }
+       if(state_fio->FgetInt32() != this_device_id) {
+               return false;
+       }
+       control = state_fio->FgetUint8();
+       irq_status = state_fio->FgetBool();
+       drq_status = state_fio->FgetBool();
+       return true;
+}
+
diff --git a/source/src/vm/mz2800/sasi.h b/source/src/vm/mz2800/sasi.h
new file mode 100644 (file)
index 0000000..c2461f6
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       SHARP MZ-2800 Emulator 'EmuZ-2800'
+
+       Author : Takeda.Toshiya
+       Date   : 2018.05.25 -
+
+       [ SASI I/F ]
+*/
+
+#ifndef _SASI_H_
+#define _SASI_H_
+
+#include "../vm.h"
+#include "../../emu.h"
+#include "../device.h"
+
+#define SIG_SASI_IRQ   0
+#define SIG_SASI_DRQ   1
+
+class SASI : public DEVICE
+{
+private:
+       DEVICE *d_host;
+       DEVICE *d_dma, *d_pic;
+       
+       // sasi
+       uint8_t control;
+       bool irq_status;
+       bool drq_status;
+       
+public:
+       SASI(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+       {
+               set_device_name(_T("SASI I/F"));
+       }
+       ~SASI() {}
+       
+       // common functions
+       void reset();
+       void write_io8(uint32_t addr, uint32_t data);
+       uint32_t read_io8(uint32_t addr);
+       void write_dma_io8(uint32_t addr, uint32_t data);
+       uint32_t read_dma_io8(uint32_t addr);
+       void write_signal(int id, uint32_t data, uint32_t mask);
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
+       
+       // unique function
+       void set_context_host(DEVICE* device)
+       {
+               d_host = device;
+       }
+       void set_context_dma(DEVICE* device)
+       {
+               d_dma = device;
+       }
+       void set_context_pic(DEVICE* device)
+       {
+               d_pic = device;
+       }
+};
+
+#endif
+
index f4aa492..d51aa04 100644 (file)
@@ -382,7 +382,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        // printer
        io->set_iovalue_single_r(0xfe, 0xc0);
 #endif
-
+       
        // initialize all devices
 #if defined(__GIT_REPO_VERSION)
        strncpy(_git_revision, __GIT_REPO_VERSION, sizeof(_git_revision) - 1);
@@ -390,6 +390,15 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->initialize();
        }
+#if defined(_MZ800) || defined(_MZ1500)
+       for(int drv = 0; drv < MAX_DRIVE; drv++) {
+//             if(config.drive_type) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+//             } else {
+//                     fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+//             }
+       }
+#endif
        decl_state();
 }
 
@@ -424,15 +433,6 @@ void VM::reset()
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->reset();
        }
-#if defined(_MZ800) || defined(_MZ1500)
-       for(int i = 0; i < MAX_DRIVE; i++) {
-               if(config.drive_type) {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2DD);
-               } else {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2D);
-               }
-       }
-#endif
        and_int->write_signal(SIG_AND_BIT_0, 0, 1);     // CLOCK = L
        and_int->write_signal(SIG_AND_BIT_1, 1, 1);     // INTMASK = H
 #if defined(_MZ800) || defined(_MZ1500)
@@ -637,6 +637,16 @@ uint32_t VM::is_quick_disk_accessed()
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
 }
 
 void VM::close_floppy_disk(int drv)
index a3b2916..c57bb86 100644 (file)
@@ -56,7 +56,6 @@
 #define USE_TAPE               1
 #define USE_TAPE_BUTTON
 #if defined(_MZ800) || defined(_MZ1500)
-#define USE_DRIVE_TYPE         2
 #define USE_FLOPPY_DISK                2
 #define USE_QUICK_DISK         1
 #endif
index 6fef144..dfa4ed1 100644 (file)
@@ -197,6 +197,20 @@ VM::~VM()
                delete device;
                device = next_device;
        }
+#if defined(SUPPORT_MZ80AIF)
+       for(int drv = 0; drv < MAX_DRIVE; drv++) {
+//             if(config.drive_type) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+//             } else {
+//                     fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+//             }
+       }
+#elif defined(SUPPORT_MZ80FIO)
+       for(int drv = 0; drv < MAX_DRIVE; drv++) {
+               fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+//             fdc->set_drive_mfm(drv, false);
+       }
+#endif
 }
 
 DEVICE* VM::get_device(int id)
@@ -219,20 +233,6 @@ void VM::reset()
        for(DEVICE* device = first_device; device; device = device->next_device) {
                device->reset();
        }
-#if defined(SUPPORT_MZ80AIF)
-       for(int i = 0; i < MAX_DRIVE; i++) {
-               if(config.drive_type) {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2DD);
-               } else {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2D);
-               }
-       }
-#elif defined(SUPPORT_MZ80FIO)
-       for(int i = 0; i < MAX_DRIVE; i++) {
-               fdc->set_drive_type(i, DRIVE_TYPE_2D);
-//             fdc->set_drive_mfm(i, false);
-       }
-#endif
 #if defined(_MZ1200) || defined(_MZ80A)
        and_int->write_signal(SIG_AND_BIT_0, 0, 1);     // CLOCK = L
        and_int->write_signal(SIG_AND_BIT_1, 1, 1);     // INTMASK = H
@@ -345,6 +345,18 @@ bool VM::get_kana_locked()
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+#if defined(SUPPORT_MZ80AIF)
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
+#endif
 }
 
 void VM::close_floppy_disk(int drv)
index 784d2d4..88dad9f 100644 (file)
@@ -533,7 +533,7 @@ void MEMBUS::update_nec_ems()
 #endif
 #endif
 
-#define STATE_VERSION  3
+#define STATE_VERSION  4
 
 #include "../statesub.h"
 
@@ -575,8 +575,8 @@ void MEMBUS::decl_state()
 #endif
 #if defined(SUPPORT_24BIT_ADDRESS) || defined(SUPPORT_32BIT_ADDRESS)
        DECL_STATE_ENTRY_UINT8(dma_access_ctrl);
-       DECL_STATE_ENTRY_INT32(window_80000h);
-       DECL_STATE_ENTRY_INT32(window_a0000h);
+       DECL_STATE_ENTRY_UINT32(window_80000h);
+       DECL_STATE_ENTRY_UINT32(window_a0000h);
 #endif
        leave_decl_state();
 
index f5739e6..aa2021b 100644 (file)
@@ -221,7 +221,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        noise_head_up = new NOISE(this, emu);
 #if defined(SUPPORT_SASI_IF)
        sasi_host = new SCSI_HOST(this, emu);
-       sasi_hdd = new SCSI_HDD(this, emu);
+       sasi_hdd = new SASI_HDD(this, emu);
        sasi_hdd->set_device_name(_T("SASI Hard Disk Drive"));
        sasi_hdd->scsi_id = 0;
        sasi_hdd->bytes_per_sec = 625 * 1024; // 625KB/s
@@ -931,27 +931,17 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
 #endif
 #if defined(USE_HARD_DISK)
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
 #if defined(SUPPORT_SASI_IF)
-       #if defined(OPEN_HARD_DISK_IN_RESET)
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
-       #else
-               open_hard_disk_tmp(drv, create_local_path(_T("SASI%d.DAT"), drv));
-       #endif
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
 #endif
 #if defined(SUPPORT_SCSI_IF)
-       #if defined(OPEN_HARD_DISK_IN_RESET)
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
-       #else
-               open_hard_disk_tmp(drv, create_local_path(_T("SCSI%d.DAT"), drv));
-       #endif
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SCSI%d.DAT"), drv);
 #endif
 #if defined(SUPPORT_IDE_IF)
-       #if defined(OPEN_HARD_DISK_IN_RESET)
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("IDE%d.DAT"),  drv);
-       #else
-               open_hard_disk_tmp(drv, create_local_path(_T("IDE%d.DAT"), drv));
-       #endif
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("IDE%d.DAT"), drv);
 #endif
+               }
        }
 #endif
 }
@@ -1121,17 +1111,6 @@ void VM::reset()
        pc88pio->write_signal(SIG_I8255_PORT_C, 0, 0xff);
        pc88pio_sub->write_signal(SIG_I8255_PORT_C, 0, 0xff);
 #endif
-       
-#if defined(USE_HARD_DISK) && defined(OPEN_HARD_DISK_IN_RESET)
-       // open/close hard disk images
-       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(hd_file_path[drv][0] != _T('\0')) {
-                       open_hard_disk_tmp(drv, hd_file_path[drv]);
-               } else {
-                       close_hard_disk_tmp(drv);
-               }
-       }
-#endif
 }
 
 void VM::run()
@@ -1406,24 +1385,24 @@ bool VM::is_floppy_disk_protected(int drv)
 
 uint32_t VM::is_floppy_disk_accessed()
 {
-       uint32_t value = 0;
+       uint32_t status = 0;
        
 #if defined(_PC98DO) || defined(_PC98DOPLUS)
        if(boot_mode != 0) {
-               value = pc88fdc_sub->read_signal(0) & 3;
+               status = pc88fdc_sub->read_signal(0) & 3;
        } else {
-               value = fdc->read_signal(0) & 3;
+               status = fdc->read_signal(0) & 3;
        }
 #else
        for(int drv = 0; drv < USE_FLOPPY_DISK; drv += 2) {
                UPD765A *controller = get_floppy_disk_controller(drv);
                
                if(controller != NULL) {
-                       value |= (controller->read_signal(0) & 3) << drv;
+                       status |= (controller->read_signal(0) & 3) << drv;
                }
        }
 #endif
-       return value;
+       return status;
 }
 
 UPD765A *VM::get_floppy_disk_controller(int drv)
@@ -1468,10 +1447,14 @@ DISK *VM::get_floppy_disk_handler(int drv)
 void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               my_tcscpy_s(hd_file_path[drv], _MAX_PATH, file_path);
-#else
-               open_hard_disk_tmp(drv, file_path);
+#if defined(SUPPORT_SASI_IF)
+               sasi_hdd->open(drv, file_path, 256);
+#endif
+#if defined(SUPPORT_SCSI_IF)
+               scsi_hdd[drv]->open(0, file_path, 512);
+#endif
+#if defined(SUPPORT_IDE_IF)
+               ide_hdd[drv]->open(0, file_path, 512);
 #endif
        }
 }
@@ -1479,10 +1462,14 @@ void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 void VM::close_hard_disk(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               hd_file_path[drv][0] = _T('\0');
-#else
-               close_hard_disk_tmp(drv);
+#if defined(SUPPORT_SASI_IF)
+               sasi_hdd->close(drv);
+#endif
+#if defined(SUPPORT_SCSI_IF)
+               scsi_hdd[drv]->close(0);
+#endif
+#if defined(SUPPORT_IDE_IF)
+               ide_hdd[drv]->close(0);
 #endif
        }
 }
@@ -1490,10 +1477,14 @@ void VM::close_hard_disk(int drv)
 bool VM::is_hard_disk_inserted(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               return (hd_file_path[drv][0] != _T('\0'));
-#else
-               return is_hard_disk_inserted_tmp(drv);
+#if defined(SUPPORT_SASI_IF)
+               return sasi_hdd->mounted(drv);
+#endif
+#if defined(SUPPORT_SCSI_IF)
+               return scsi_hdd[drv]->mounted(0);
+#endif
+#if defined(SUPPORT_IDE_IF)
+               return ide_hdd[drv]->mounted(0);
 #endif
        }
        return false;
@@ -1504,57 +1495,23 @@ uint32_t VM::is_hard_disk_accessed()
        uint32_t status = 0;
        
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               HARDDISK *handler = get_hard_disk_handler(drv);
-               
-               if(handler != NULL && handler->accessed()) {
+#if defined(SUPPORT_SASI_IF)
+               if(sasi_hdd->accessed(drv)) {
                        status |= 1 << drv;
                }
-       }
-       return status;
-}
-
-void VM::open_hard_disk_tmp(int drv, const _TCHAR* file_path)
-{
-       HARDDISK *handler = get_hard_disk_handler(drv);
-       
-       if(handler != NULL) {
-               handler->open(file_path);
-       }
-}
-
-void VM::close_hard_disk_tmp(int drv)
-{
-       HARDDISK *handler = get_hard_disk_handler(drv);
-       
-       if(handler != NULL) {
-               handler->close();
-       }
-}
-
-bool VM::is_hard_disk_inserted_tmp(int drv)
-{
-       HARDDISK *handler = get_hard_disk_handler(drv);
-       
-       if(handler != NULL) {
-               return handler->mounted();
-       }
-       return false;
-}
-
-HARDDISK *VM::get_hard_disk_handler(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-#if defined(SUPPORT_SASI_IF)
-               return sasi_hdd->get_disk_handler(drv);
 #endif
 #if defined(SUPPORT_SCSI_IF)
-               return scsi_hdd[drv]->get_disk_handler(0);
+               if(scsi_hdd[drv]->accessed(0)) {
+                       status |= 1 << drv;
+               }
 #endif
 #if defined(SUPPORT_IDE_IF)
-               return ide_hdd[drv]->get_disk_handler(0);
+               if(ide_hdd[drv]->accessed(0)) {
+                       status |= 1 << drv;
+               }
 #endif
        }
-       return NULL;
+       return status;
 }
 #endif
 
index aefbdf0..bdfd8a3 100644 (file)
 #endif
 #if defined(SUPPORT_SASI_IF) || defined(SUPPORT_SCSI_IF) || defined(SUPPORT_IDE_IF)
 #define USE_HARD_DISK          2
-#define OPEN_HARD_DISK_IN_RESET
 #endif
 #if defined(SUPPORT_CMT_IF) || defined(_PC98DO) || defined(_PC98DOPLUS)
 #define USE_TAPE               1
@@ -361,7 +360,11 @@ class NOT;
 #if !defined(SUPPORT_OLD_BUZZER)
 class PCM1BIT;
 #endif
-#if defined(SUPPORT_SASI_IF) || defined(SUPPORT_SCSI_IF)
+#if defined(SUPPORT_SASI_IF)
+class SASI_HDD;
+class SCSI_HOST;
+#define SCSI_HOST_AUTO_ACK
+#elif defined(SUPPORT_SCSI_IF)
 class SCSI_HDD;
 class SCSI_HOST;
 #define SCSI_HOST_AUTO_ACK
@@ -452,7 +455,7 @@ protected:
        NOT* not_prn;
 #endif
 #if defined(SUPPORT_SASI_IF)
-       SCSI_HDD* sasi_hdd;
+       SASI_HDD* sasi_hdd;
        SCSI_HOST* sasi_host;
 #endif
 #if defined(SUPPORT_SCSI_IF)
@@ -544,15 +547,6 @@ protected:
        // drives
        UPD765A *get_floppy_disk_controller(int drv);
        DISK *get_floppy_disk_handler(int drv);
-#if defined(USE_HARD_DISK)
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       _TCHAR hd_file_path[2][_MAX_PATH];
-#endif
-       void open_hard_disk_tmp(int drv, const _TCHAR* file_path);
-       void close_hard_disk_tmp(int drv);
-       bool is_hard_disk_inserted_tmp(int drv);
-       HARDDISK *get_hard_disk_handler(int drv);
-#endif
        
 public:
        // ----------------------------------------
index 15a52d2..04df07c 100644 (file)
@@ -102,7 +102,7 @@ uint32_t SASI::read_io8(uint32_t addr)
                                uint32_t dt = 7, ct = 0;
                                
                                if(unit != NULL && unit->mounted()) {
-                                       double size = unit->cylinders * unit->surfaces * unit->sectors * unit->sector_size;
+                                       double size = unit->sector_num * unit->sector_size;
                                        int size_mb = (int)(size / 1024.0 / 1024.0 + 0.5);
                                        
                                        if(size_mb <= 6) {
index ef2d226..8f3fc37 100644 (file)
 #define SIG_SASI_DRQ   1
 #define SIG_SASI_TC    2
 
-class SCSI_HDD;
+class SASI_HDD;
 
 class SASI : public DEVICE
 {
 private:
        DEVICE *d_host;
-       SCSI_HDD *d_hdd;
+       SASI_HDD *d_hdd;
        DEVICE *d_dma, *d_pic;
        
        uint8_t ocr;
@@ -57,7 +57,7 @@ public:
        {
                d_host = device;
        }
-       void set_context_hdd(SCSI_HDD* device)
+       void set_context_hdd(SASI_HDD* device)
        {
                d_hdd = device;
        }
index 9806350..0fb7681 100644 (file)
@@ -26,7 +26,7 @@ bool BIOS::bios_int_i86(int intnum, uint16_t regs[], uint16_t sregs[], int32_t*
                case 0x10:
                case 0x70:
                        // 2DD
-                       if(d_fdc->is_disk_inserted(AL & 0x03) && d_fdc->media_type(AL & 0x03) != MEDIA_TYPE_2DD) {
+                       if(d_fdc->is_disk_inserted(AL & 0x03) && d_fdc->get_media_type(AL & 0x03) != MEDIA_TYPE_2DD) {
                                AH = 0xe0;
                                *CarryFlag = 1;
                                return true;
@@ -35,7 +35,7 @@ bool BIOS::bios_int_i86(int intnum, uint16_t regs[], uint16_t sregs[], int32_t*
                case 0x90:
                case 0xf0:
                        // 2HD
-                       if(d_fdc->is_disk_inserted(AL & 0x03) && d_fdc->media_type(AL & 0x03) != MEDIA_TYPE_2HD) {
+                       if(d_fdc->is_disk_inserted(AL & 0x03) && d_fdc->get_media_type(AL & 0x03) != MEDIA_TYPE_2HD) {
                                AH = 0xe0;
                                *CarryFlag = 1;
                                return true;
index cb97b15..958fed4 100644 (file)
@@ -434,29 +434,39 @@ void SCSI_CDROM::start_command()
        SCSI_DEV::start_command();
 }
 
-void SCSI_CDROM::read_buffer(int length)
+bool SCSI_CDROM::read_buffer(int length)
 {
-       if(fio_img->IsOpened()) {
-               uint32_t offset = (uint32_t)(position % 2352);
+       if(!fio_img->IsOpened()) {
+               set_sense_code(SCSI_SENSE_NOTREADY);
+               return false;
+       }
+       uint32_t offset = (uint32_t)(position % 2352);
+       
+       if(fio_img->Fseek((long)position, FILEIO_SEEK_SET) != 0) {
+               set_sense_code(SCSI_SENSE_ILLGLBLKADDR); //SCSI_SENSE_SEEKERR
+               return false;
+       }
+       while(length > 0) {
+               uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
+               int tmp_length = min(length, (int)sizeof(tmp_buffer));
                
-               fio_img->Fseek((long)position, FILEIO_SEEK_SET);
-               while(length > 0) {
-                       uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
-                       int tmp_length = min(length, (int)sizeof(tmp_buffer));
-                       
-                       fio_img->Fread(tmp_buffer, tmp_length, 1);
-                       for(int i = 0; i < tmp_length && length > 0; i++) {
-                               if(offset >= 16 && offset < 16 + 2048) {
-                                       int value = tmp_buffer[i];
-                                       buffer->write(value);
-                                       length--;
-                               }
-                               position++;
-                               offset = (offset + 1) % 2352;
+               if(fio_img->Fread(tmp_buffer, tmp_length, 1) != 1) {
+                       set_sense_code(SCSI_SENSE_ILLGLBLKADDR); //SCSI_SENSE_NORECORDFND
+                       return false;
+               }
+               for(int i = 0; i < tmp_length && length > 0; i++) {
+                       if(offset >= 16 && offset < 16 + 2048) {
+                               int value = tmp_buffer[i];
+                               buffer->write(value);
+                               length--;
                        }
-                       access = true;
+                       position++;
+                       offset = (offset + 1) % 2352;
                }
+               access = true;
        }
+       set_sense_code(SCSI_SENSE_NOSENSE);
+       return true;
 }
 
 int get_frames_from_msf(const char *string)
index 6b4a47b..d7a03fd 100644 (file)
@@ -63,6 +63,7 @@ public:
                my_sprintf_s(product_id, 17, "SCSI-CDROM");
                device_type = 0x05; // CD-ROM drive
                is_removable = true;
+               is_hot_swappable = false;
 //             seek_time = 400000; // 400msec (temporary)
                seek_time = 10.0;
                bytes_per_sec = 2048 * 75; // speed x1
@@ -105,7 +106,7 @@ public:
        }
        int get_command_length(int value);
        void start_command();
-       void read_buffer(int length);
+       bool read_buffer(int length);
        
        // unique functions
        void set_context_done(DEVICE* device, int id, uint32_t mask)
index 05f369e..36b661d 100644 (file)
@@ -35,6 +35,7 @@ void SCSI_DEV::reset()
        
        event_sel = event_phase = event_req = -1;
        set_phase(SCSI_PHASE_BUS_FREE);
+       set_sense_code(SCSI_SENSE_NOSENSE);
 }
 
 void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
@@ -184,7 +185,12 @@ void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
                                                        case SCSI_CMD_WRITE12:
                                                                // flush buffer
                                                                if(buffer->full()) {
-                                                                       write_buffer(buffer->count());
+                                                                       if(!write_buffer(buffer->count())) {
+                                                                               // change to status phase
+                                                                               set_dat(SCSI_STATUS_CHKCOND);
+                                                                               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                                                                               break;
+                                                                       }
                                                                }
                                                                // request to write next data
                                                                {
@@ -209,7 +215,12 @@ void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
                                                        case SCSI_CMD_WRITE12:
                                                                // flush buffer
                                                                if(!buffer->empty()) {
-                                                                       write_buffer(buffer->count());
+                                                                       if(!write_buffer(buffer->count())) {
+                                                                               // change to status phase
+                                                                               set_dat(SCSI_STATUS_CHKCOND);
+                                                                               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                                                                               break;
+                                                                       }
                                                                }
                                                                break;
                                                        default:
@@ -221,6 +232,7 @@ void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
                                                        }
                                                        // change to status phase
                                                        set_dat(SCSI_STATUS_GOOD);
+                                                       set_sense_code(SCSI_SENSE_NOSENSE);
                                                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                                                }
                                                break;
@@ -229,10 +241,12 @@ void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
                                                if(--remain > 0) {
                                                        // update buffer
                                                        if(buffer->count() == 0) {
-                                                               if(remain > SCSI_BUFFER_SIZE) {
-                                                                       read_buffer(SCSI_BUFFER_SIZE);
-                                                               } else {
-                                                                       read_buffer((int)remain);
+                                                               int length = remain > SCSI_BUFFER_SIZE ? SCSI_BUFFER_SIZE : (int)remain;
+                                                               if(!read_buffer(length)) {
+                                                                       // change to status phase
+                                                                       set_dat(SCSI_STATUS_CHKCOND);
+                                                                       set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                                                                       break;
                                                                }
                                                        }
                                                        // request to read next data
@@ -254,6 +268,7 @@ void SCSI_DEV::write_signal(int id, uint32_t data, uint32_t mask)
                                                } else {
                                                        // change to status phase
                                                        set_dat(SCSI_STATUS_GOOD);
+                                                       set_sense_code(SCSI_SENSE_NOSENSE);
                                                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                                                }
                                                break;
@@ -487,7 +502,13 @@ void SCSI_DEV::start_command()
                        this->out_debug_log(_T("[SCSI_DEV:ID=%d] Command: Test Unit Ready\n"), scsi_id);
                #endif
                // change to status phase
-               set_dat(is_device_ready() ? SCSI_STATUS_GOOD : SCSI_STATUS_CHKCOND);
+               if(!is_device_ready()) {
+                       set_dat(SCSI_STATUS_CHKCOND);
+                       set_sense_code(SCSI_SENSE_NOTREADY);
+               } else {
+                       set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
+               }
                set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                break;
                
@@ -627,10 +648,12 @@ void SCSI_DEV::start_command()
                if(remain != 0) {
                        // read data buffer
                        buffer->clear();
-                       if(remain > SCSI_BUFFER_SIZE) {
-                               read_buffer(SCSI_BUFFER_SIZE);
-                       } else {
-                               read_buffer((int)remain);
+                       int length = remain > SCSI_BUFFER_SIZE ? SCSI_BUFFER_SIZE : (int)remain;
+                       if(!read_buffer(length)) {
+                               // change to status phase
+                               set_dat(SCSI_STATUS_CHKCOND);
+                               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                               break;
                        }
                        // change to data in phase
                        set_dat(buffer->read());
@@ -638,6 +661,7 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
@@ -659,6 +683,7 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
@@ -676,10 +701,12 @@ void SCSI_DEV::start_command()
                if(remain != 0) {
                        // read data buffer
                        buffer->clear();
-                       if(remain > SCSI_BUFFER_SIZE) {
-                               read_buffer(SCSI_BUFFER_SIZE);
-                       } else {
-                               read_buffer((int)remain);
+                       int length = remain > SCSI_BUFFER_SIZE ? SCSI_BUFFER_SIZE : (int)remain;
+                       if(!read_buffer(length)) {
+                               // change to status phase
+                               set_dat(SCSI_STATUS_CHKCOND);
+                               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                               break;
                        }
                        // change to data in phase
                        set_dat(buffer->read());
@@ -687,6 +714,7 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
@@ -715,6 +743,7 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
@@ -732,10 +761,12 @@ void SCSI_DEV::start_command()
                if(remain != 0) {
                        // read data buffer
                        buffer->clear();
-                       if(remain > SCSI_BUFFER_SIZE) {
-                               read_buffer(SCSI_BUFFER_SIZE);
-                       } else {
-                               read_buffer((int)remain);
+                       int length = remain > SCSI_BUFFER_SIZE ? SCSI_BUFFER_SIZE : (int)remain;
+                       if(!read_buffer(length)) {
+                               // change to status phase
+                               set_dat(SCSI_STATUS_CHKCOND);
+                               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+                               break;
                        }
                        // change to data in phase
                        set_dat(buffer->read());
@@ -743,6 +774,7 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
@@ -765,22 +797,11 @@ void SCSI_DEV::start_command()
                } else {
                        // transfer length is zero, change to status phase
                        set_dat(SCSI_STATUS_GOOD);
+                       set_sense_code(SCSI_SENSE_NOSENSE);
                        set_phase_delay(SCSI_PHASE_STATUS, 10.0);
                }
                break;
                
-       case SASI_CMD_SPECIFY:
-               #ifdef _SCSI_DEBUG_LOG
-                       this->out_debug_log(_T("[SCSI_DEV:ID=%d] Command: SASI Command 0xC2\n"), scsi_id);
-               #endif
-               // transfer length
-               remain = 10;
-               // clear data buffer
-               buffer->clear();
-               // change to data in phase
-               set_phase_delay(SCSI_PHASE_DATA_OUT, 1.0);
-               break;
-               
        default:
                #ifdef _SCSI_DEBUG_LOG
                        this->out_debug_log(_T("[SCSI_DEV:ID=%d] Command: Unknown %02X\n"), scsi_id, command[0]);
@@ -790,23 +811,27 @@ void SCSI_DEV::start_command()
        }
 }
 
-void SCSI_DEV::read_buffer(int length)
+bool SCSI_DEV::read_buffer(int length)
 {
        for(int i = 0; i < length; i++) {
                buffer->write(0);
                position++;
        }
+       set_sense_code(SCSI_SENSE_NOSENSE);
+       return true;
 }
 
-void SCSI_DEV::write_buffer(int length)
+bool SCSI_DEV::write_buffer(int length)
 {
        for(int i = 0; i < length; i++) {
                buffer->read();
                position++;
        }
+       set_sense_code(SCSI_SENSE_NOSENSE);
+       return true;
 }
 
-#define STATE_VERSION  2
+#define STATE_VERSION  3
 
 #include "../statesub.h"
 
@@ -835,6 +860,7 @@ void SCSI_DEV::decl_state()
        DECL_STATE_ENTRY_FIFO(buffer);
        DECL_STATE_ENTRY_UINT64(position);
        DECL_STATE_ENTRY_UINT64(remain);
+       DECL_STATE_ENTRY_UINT8(sense_code);
 
 //     leave_decl_state();
 }
index 689f058..36f9553 100644 (file)
@@ -94,12 +94,11 @@ static const _TCHAR* scsi_phase_name[9] = {
 #define SCSI_CMD_READHEADER    0x44    // Read Header (O)
 #define SCSI_CMD_SUBCHANNEL    0x42    // Read Subchannel (O)
 #define SCSI_CMD_READ_TOC      0x43    // Read TOC (O)
-#define SASI_CMD_SPECIFY       0xc2    // SASI Specify
 
 #define SCSI_STATUS_GOOD       0x00    // Status Good
 #define SCSI_STATUS_CHKCOND    0x02    // Check Condition
 #define SCSI_STATUS_CONDMET    0x04    // Condition Met
-#define SCSI_STATUS_BUSY       0x08    // Busy
+#define SCSI_STATUS_BUSY       0x08    // Busy 
 #define SCSI_STATUS_INTERM     0x10    // Intermediate
 #define SCSI_STATUS_INTCDMET   0x14    // Intermediate-Condition Met
 #define SCSI_STATUS_RESCONF    0x18    // Reservation Conflict
@@ -126,6 +125,13 @@ static const _TCHAR* scsi_phase_name[9] = {
 #define SCSI_KEY_MISCOMP       0x0E    // Miscompare (Search)
 #define SCSI_KEY_RESERVED      0x0F    // Reserved
 
+#define SCSI_SENSE_NOSENSE     0x00    // No Sense
+#define SCSI_SENSE_NOTREADY    0x04    // Not Ready
+#define SCSI_SENSE_NORECORDFND 0x14    // No Record Found
+#define SCSI_SENSE_SEEKERR     0x15    // Seek Error
+#define SCSI_SENSE_ILLGLBLKADDR        0x21    // Illegal Block Address
+#define SCSI_SENSE_WRITEPROTCT 0x27    // Write Protected
+
 class FIFO;
 
 class SCSI_DEV : public DEVICE
@@ -147,6 +153,8 @@ private:
        uint32_t first_req_clock;
        double next_req_usec;
        
+       uint8_t sense_code;
+       
 public:
        SCSI_DEV(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
        {
@@ -186,6 +194,14 @@ public:
                register_output_signal(&outputs_msg, device, SIG_SCSI_MSG, 1 << scsi_id);
                register_output_signal(&outputs_req, device, SIG_SCSI_REQ, 1 << scsi_id);
        }
+       uint8_t get_sense_code()
+       {
+               return sense_code;
+       }
+       void set_sense_code(uint8_t value)
+       {
+               sense_code = value;
+       }
        void set_phase(int value);
        void set_phase_delay(int value, double usec);
        void set_dat(int value);
@@ -219,8 +235,8 @@ public:
        }
        virtual int get_command_length(int value);
        virtual void start_command();
-       virtual void read_buffer(int length);
-       virtual void write_buffer(int length);
+       virtual bool read_buffer(int length);
+       virtual bool write_buffer(int length);
        
        uint8_t get_cur_command()
        {
@@ -240,6 +256,7 @@ public:
        char product_id[16 + 1];
        uint8_t device_type;
        bool is_removable;
+       bool is_hot_swappable;
        double seek_time;
        int bytes_per_sec;
        
index 0e6b388..ccfa061 100644 (file)
@@ -4,7 +4,7 @@
        Author : Takeda.Toshiya
        Date   : 2016.03.01-
 
-       [ SCSI hard disk drive ]
+       [ SCSI/SASI hard disk drive ]
 */
 
 #include "scsi_hdd.h"
@@ -22,6 +22,65 @@ void SCSI_HDD::release()
        SCSI_DEV::release();
 }
 
+void SCSI_HDD::reset()
+{
+       if(!is_hot_swappable) {
+               for(int drv = 0; drv < 8; drv++) {
+                       if(disk[drv] != NULL) {
+                               if(image_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(image_path[drv])) {
+                                       disk[drv]->open(image_path[drv], sector_size[drv]);
+                               } else {
+                                       disk[drv]->close();
+                               }
+                       }
+               }
+       }
+       SCSI_DEV::reset();
+}
+
+void SCSI_HDD::open(int drv, const _TCHAR* file_path, int default_sector_size)
+{
+       if(drv < 8 && disk[drv] != NULL) {
+               if(!is_hot_swappable) {
+                       my_tcscpy_s(image_path[drv], _MAX_PATH, file_path);
+                       sector_size[drv] = default_sector_size;
+               } else {
+                       disk[drv]->open(file_path, default_sector_size);
+               }
+       }
+}
+
+void SCSI_HDD::close(int drv)
+{
+       if(drv < 8 && disk[drv] != NULL) {
+               if(!is_hot_swappable) {
+                       image_path[drv][0] = _T('\0');
+               } else {
+                       disk[drv]->close();
+               }
+       }
+}
+
+bool SCSI_HDD::mounted(int drv)
+{
+       if(drv < 8 && disk[drv] != NULL) {
+               if(!is_hot_swappable) {
+                       return (image_path[drv][0] != _T('\0'));
+               } else {
+                       return disk[drv]->mounted();
+               }
+       }
+       return false;
+}
+
+bool SCSI_HDD::accessed(int drv)
+{
+       if(drv < 8 && disk[drv] != NULL) {
+               return disk[drv]->accessed();
+       }
+       return false;
+}
+
 bool SCSI_HDD::is_device_existing()
 {
        for(int i = 0; i < 8; i++) {
@@ -39,7 +98,7 @@ uint32_t SCSI_HDD::physical_block_size()
        if(unit != NULL && unit->mounted()) {
                return unit->sector_size;
        }
-       return 512;
+       return 0;// 512;
 }
 
 uint32_t SCSI_HDD::logical_block_size()
@@ -49,65 +108,83 @@ uint32_t SCSI_HDD::logical_block_size()
        if(unit != NULL && unit->mounted()) {
                return unit->sector_size;
        }
-       return 512;
+       return 0;// 512;
 }
 
 uint32_t SCSI_HDD::max_logical_block_addr()
 {
        HARDDISK *unit = disk[get_logical_unit_number()];
        
-       if(unit != NULL && unit->mounted()) {
-               return unit->cylinders * unit->surfaces * unit->sectors;
+       if(unit != NULL && unit->mounted() && unit->sector_num > 0) {
+               return unit->sector_num - 1;
        }
        return 0;
 }
 
-void SCSI_HDD::read_buffer(int length)
+bool SCSI_HDD::read_buffer(int length)
 {
        HARDDISK *unit = disk[get_logical_unit_number()];
        
-       if(unit != NULL && unit->mounted()) {
-               while(length > 0) {
-                       uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
-                       int tmp_length = min(length, (int)sizeof(tmp_buffer));
-                       
-                       unit->read_buffer((long)position, tmp_length, tmp_buffer);
-                       for(int i = 0; i < tmp_length; i++) {
-                               buffer->write(tmp_buffer[i]);
-                       }
-                       length -= tmp_length;
-                       position += tmp_length;
-               }
+       if(!(unit != NULL && unit->mounted())) {
+               set_sense_code(SCSI_SENSE_NOTREADY);
+               return false;
        }
+       while(length > 0) {
+               uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
+               int tmp_length = min(length, (int)sizeof(tmp_buffer));
+               
+               if(!unit->read_buffer((long)position, tmp_length, tmp_buffer)) {
+                       set_sense_code(SCSI_SENSE_ILLGLBLKADDR); //SCSI_SENSE_NORECORDFND
+                       return false;
+               }
+               for(int i = 0; i < tmp_length; i++) {
+                       buffer->write(tmp_buffer[i]);
+               }
+               length -= tmp_length;
+               position += tmp_length;
+       }
+       set_sense_code(SCSI_SENSE_NOSENSE);
+       return true;
 }
 
-void SCSI_HDD::write_buffer(int length)
+bool SCSI_HDD::write_buffer(int length)
 {
        HARDDISK *unit = disk[get_logical_unit_number()];
        
-       if(unit != NULL && unit->mounted()) {
-               while(length > 0) {
-                       uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
-                       int tmp_length = min(length, (int)sizeof(tmp_buffer));
-                       
-                       for(int i = 0; i < tmp_length; i++) {
-                               tmp_buffer[i] = buffer->read();
-                       }
-                       unit->write_buffer((long)position, tmp_length, tmp_buffer);
-                       length -= tmp_length;
-                       position += tmp_length;
-               }
+       if(!(unit != NULL && unit->mounted())) {
+               set_sense_code(SCSI_SENSE_NOTREADY);
+               return false;
        }
+       while(length > 0) {
+               uint8_t tmp_buffer[SCSI_BUFFER_SIZE];
+               int tmp_length = min(length, (int)sizeof(tmp_buffer));
+               
+               for(int i = 0; i < tmp_length; i++) {
+                       tmp_buffer[i] = buffer->read();
+               }
+               if(!unit->write_buffer((long)position, tmp_length, tmp_buffer)) {
+                       set_sense_code(SCSI_SENSE_ILLGLBLKADDR); //SCSI_SENSE_NORECORDFND
+                       return false;
+               }
+               length -= tmp_length;
+               position += tmp_length;
+       }
+       set_sense_code(SCSI_SENSE_NOSENSE);
+       return true;
 }
 
-#define STATE_VERSION  1
+#define STATE_VERSION  3
 
 #include "../statesub.h"
 
 void SCSI_HDD::decl_state()
 {
        enter_decl_state(STATE_VERSION);
-       
+
+       for(int i = 0; i < 8; i++) {
+               DECL_STATE_ENTRY_STRING_MEMBER(&(image_path[i][0]), MAX_PATH, i);
+       }
+       DECL_STATE_ENTRY_1D_ARRAY(sector_size, sizeof(sector_size) / sizeof(int));  
        leave_decl_state();
 
        SCSI_DEV::decl_state();
index 6e37a7e..bd57929 100644 (file)
@@ -4,7 +4,7 @@
        Author : Takeda.Toshiya
        Date   : 2016.03.01-
 
-       [ SCSI hard disk drive ]
+       [ SCSI/SASI hard disk drive ]
 */
 
 #ifndef _SCSI_HDD_H_
@@ -23,20 +23,25 @@ private:
 //protected:
 //     csp_state_utils *state_entry;
 
+       _TCHAR image_path[8][MAX_PATH];
+       int sector_size[8];
+       
 public:
        SCSI_HDD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu) 
        {
                for(int i = 0; i < 8; i++) {
                        disk[i] = NULL;
+                       image_path[i][0] = _T('\0');
                }
                my_sprintf_s(vendor_id, 9, "NECITSU");
                my_sprintf_s(product_id, 17, "SCSI-HDD");
                device_type = 0x00;
-               is_removable = false;
+               is_removable = is_hot_swappable = false;
+
                seek_time = 10000; // 10msec
                bytes_per_sec = 0x500000; // 5MB/sec
                
-               default_drive_size = 0x2800000; // 40MB
+//             default_drive_size = 0x2800000; // 40MB
                set_device_name(_T("SCSI HDD"));
        }
        ~SCSI_HDD() {}
@@ -48,12 +53,13 @@ public:
        
        // virtual scsi functions
        void release();
+       void reset();
        bool is_device_existing();
        uint32_t physical_block_size();
        uint32_t logical_block_size();
        uint32_t max_logical_block_addr();
-       void read_buffer(int length);
-       void write_buffer(int length);
+       bool read_buffer(int length);
+       bool write_buffer(int length);
        
        // unique functions
        void set_disk_handler(int drv, HARDDISK* device)
@@ -69,7 +75,24 @@ public:
                }
                return NULL;
        }
-       uint32_t default_drive_size;
+       void open(int drv, const _TCHAR* file_path, int default_sector_size);
+       void close(int drv);
+       bool mounted(int drv);
+       bool accessed(int drv);
+};
+
+class SASI_HDD : public SCSI_HDD
+{
+public:
+       SASI_HDD(VM* parent_vm, EMU* parent_emu) : SCSI_HDD(parent_vm, parent_emu)
+       {
+               set_device_name(_T("SASI Hard Disk Drive"));
+       }
+       ~SASI_HDD() {}
+       
+       // virtual scsi functions
+       int get_command_length(int value);
+       void start_command();
 };
 
 #endif
index 1b38c4d..b161387 100644 (file)
@@ -199,7 +199,12 @@ void UPD71071::do_dma()
 /*
                                if((dma[c].mode & 0x01) == 1) {
                                        // 16bit transfer mode
-                                       if((dma[c].mode & 0x0c) == 4) {
+                                       if((dma[c].mode & 0x0c) == 0x00) {
+                                               // verify
+                                               uint32_t val = dma[c].dev->read_dma_io16(0);
+                                               // update temporary register
+                                               tmp = val;
+                                       } else if((dma[c].mode & 0x0c) == 0x04) {
                                                // io -> memory
                                                uint32_t val;
                                                if(dma[c].dev != NULL) {
@@ -210,7 +215,7 @@ void UPD71071::do_dma()
                                                d_mem->write_dma_data16(dma[c].areg, val);
                                                // update temporary register
                                                tmp = val;
-                                       } else if((dma[c].mode & 0x0c) == 8) {
+                                       } else if((dma[c].mode & 0x0c) == 0x08) {
                                                // memory -> io
                                                uint32_t val = d_mem->read_dma_data16(dma[c].areg);
                                                if(dma[c].dev != NULL) dma[c].dev->write_dma_io16(0, val);
@@ -226,14 +231,19 @@ void UPD71071::do_dma()
 */
                                {
                                        // 8bit transfer mode
-                                       if((dma[c].mode & 0x0c) == 4) {
+                                       if((dma[c].mode & 0x0c) == 0x00) {
+                                               // verify
+                                               uint32_t val = dma[c].dev->read_dma_io8(0);
+                                               // update temporary register
+                                               tmp = (tmp >> 8) | (val << 8);
+                                       } else if((dma[c].mode & 0x0c) == 0x04) {
                                                // io -> memory
                                                uint32_t val;
                                                val = dma[c].dev->read_dma_io8(0);
                                                d_mem->write_dma_data8(dma[c].areg, val);
                                                // update temporary register
                                                tmp = (tmp >> 8) | (val << 8);
-                                       } else if((dma[c].mode & 0x0c) == 8) {
+                                       } else if((dma[c].mode & 0x0c) == 0x08) {
                                                // memory -> io
                                                uint32_t val = d_mem->read_dma_data8(dma[c].areg);
                                                dma[c].dev->write_dma_io8(0, val);
index f35d1f7..d51e440 100644 (file)
@@ -1753,7 +1753,7 @@ bool UPD765A::is_disk_protected(int drv)
        return false;
 }
 
-uint8_t UPD765A::media_type(int drv)
+uint8_t UPD765A::get_media_type(int drv)
 {
        if(drv < _max_drive && disk[drv]->inserted) {
                return disk[drv]->media_type;
index 368456c..913cdca 100644 (file)
@@ -241,7 +241,7 @@ public:
        bool disk_ejected();    // current hdu
        void is_disk_protected(int drv, bool value);
        bool is_disk_protected(int drv);
-       uint8_t media_type(int drv);
+       uint8_t get_media_type(int drv);
        void set_drive_type(int drv, uint8_t type);
        uint8_t get_drive_type(int drv);
        void set_drive_rpm(int drv, int rpm);
index 4d71337..4c77b80 100644 (file)
@@ -22,9 +22,6 @@
 void FLOPPY::reset()
 {
        register_id = -1;
-#ifdef _X1TURBO_FEATURE
-       select_2dd = false;
-#endif
 }
 
 void FLOPPY::write_io8(uint32_t addr, uint32_t data)
@@ -64,23 +61,20 @@ uint32_t FLOPPY::read_io8(uint32_t addr)
        switch(addr) {
        case 0xffc:     // FM
 //             d_fdc->set_drive_mfm(prev & 3, false);
-               select_2dd = false;
                return 0xff;
        case 0xffd:     // MFM
 //             d_fdc->set_drive_mfm(prev & 3, true);
-               select_2dd = false;
                return 0xff;
        case 0xffe:     // 2HD
                d_fdc->set_drive_type(prev & 3, DRIVE_TYPE_2HD);
 //             d_fdc->set_drive_rpm(prev & 3, 360);
                return 0xff;
        case 0xfff:     // 2D/2DD
-               if(!select_2dd) {
-                       d_fdc->set_drive_type(prev & 3, DRIVE_TYPE_2D);
-               } else {
+               if(d_fdc->get_media_type(prev & 3) == MEDIA_TYPE_2DD) {
                        d_fdc->set_drive_type(prev & 3, DRIVE_TYPE_2DD);
+               } else {
+                       d_fdc->set_drive_type(prev & 3, DRIVE_TYPE_2D);
                }
-               select_2dd = !select_2dd;
 //             d_fdc->set_drive_rpm(prev & 3, 300);
                return 0xff;
        }
@@ -100,7 +94,7 @@ void FLOPPY::event_callback(int event_id, int err)
        register_id = -1;
 }
 
-#define STATE_VERSION  2
+#define STATE_VERSION  3
 
 #include "../statesub.h"
 
@@ -109,9 +103,6 @@ void FLOPPY::decl_state()
        enter_decl_state(STATE_VERSION);
        
        DECL_STATE_ENTRY_INT32(prev);
-#ifdef _X1TURBO_FEATURE
-       DECL_STATE_ENTRY_BOOL(select_2dd);
-#endif
        DECL_STATE_ENTRY_BOOL(motor_on);
        DECL_STATE_ENTRY_INT32(register_id);
        leave_decl_state();
index c54b705..b7f67cf 100644 (file)
@@ -27,9 +27,6 @@ class FLOPPY : public DEVICE
 private:
        MB8877 *d_fdc;
        int prev;
-#ifdef _X1TURBO_FEATURE
-       bool select_2dd;
-#endif
        bool motor_on;
        int register_id;
        
index cb5dc7c..776a671 100644 (file)
@@ -94,7 +94,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        fdc->set_context_noise_head_up(new NOISE(this, emu));
        sasi_host = new SCSI_HOST(this, emu);
        for (int i = 0; i < array_length(sasi_hdd); i++) {
-               sasi_hdd[i] = new SCSI_HDD(this, emu);
+               sasi_hdd[i] = new SASI_HDD(this, emu);
                sasi_hdd[i]->set_device_name(_T("SASI Hard Disk Drive #%d"), i + 1);
                sasi_hdd[i]->scsi_id = i;
                sasi_hdd[i]->bytes_per_sec = 32 * 1024; // 32KB/s
@@ -458,19 +458,18 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
        }
        for(int drv = 0; drv < MAX_DRIVE; drv++) {
 //#ifdef _X1TURBO_FEATURE
-//             fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
-//#else
+//             if(config.drive_type == 2) {
+//                     fdc->set_drive_type(drv, DRIVE_TYPE_2HD);
+//             } else
+///#ndif
                fdc->set_drive_type(drv, DRIVE_TYPE_2D);
-//#endif
 //             fdc->set_drive_rpm(drv, 300);
 //             fdc->set_drive_mfm(drv, true);
        }
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               create_local_path(hd_file_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
-#else
-               open_hard_disk_tmp(drv, create_local_path(_T("SASI%d.DAT"), drv));
-#endif
+               if(!(config.last_hard_disk_path[drv][0] != _T('\0') && FILEIO::IsFileExisting(config.last_hard_disk_path[drv]))) {
+                       create_local_path(config.last_hard_disk_path[drv], _MAX_PATH, _T("SASI%d.DAT"), drv);
+               }
        }
        decl_state();
 }
@@ -508,17 +507,6 @@ void VM::reset()
        }
        pio->write_signal(SIG_I8255_PORT_B, 0x00, 0x08);        // busy = low
        psg->set_reg(0x2e, 0);  // set prescaler
-       
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       // open/close hard disk images
-       for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(hd_file_path[drv][0] != _T('\0')) {
-                       open_hard_disk_tmp(drv, hd_file_path[drv]);
-               } else {
-                       close_hard_disk_tmp(drv);
-               }
-       }
-#endif
 }
 
 void VM::special_reset()
@@ -736,6 +724,18 @@ bool VM::get_kana_locked()
 void VM::open_floppy_disk(int drv, const _TCHAR* file_path, int bank)
 {
        fdc->open_disk(drv, file_path, bank);
+       
+#ifdef _X1TURBO_FEATURE
+       if(fdc->get_media_type(drv) == MEDIA_TYPE_2DD) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2D) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2DD);
+               }
+       } else if(fdc->get_media_type(drv) == MEDIA_TYPE_2D) {
+               if(fdc->get_drive_type(drv) == DRIVE_TYPE_2DD) {
+                       fdc->set_drive_type(drv, DRIVE_TYPE_2D);
+               }
+       }
+#endif
 }
 
 void VM::close_floppy_disk(int drv)
@@ -766,33 +766,21 @@ uint32_t VM::is_floppy_disk_accessed()
 void VM::open_hard_disk(int drv, const _TCHAR* file_path)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               my_tcscpy_s(hd_file_path[drv], _MAX_PATH, file_path);
-#else
-               open_hard_disk_tmp(drv, file_path);
-#endif
+               sasi_hdd[drv >> 1]->open(drv & 1, file_path, 256);
        }
 }
 
 void VM::close_hard_disk(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               hd_file_path[drv][0] = _T('\0');
-#else
-               close_hard_disk_tmp(drv);
-#endif
+               sasi_hdd[drv >> 1]->close(drv & 1);
        }
 }
 
 bool VM::is_hard_disk_inserted(int drv)
 {
        if(drv < USE_HARD_DISK) {
-#if defined(OPEN_HARD_DISK_IN_RESET)
-               return (hd_file_path[drv][0] != _T('\0'));
-#else
-               return is_hard_disk_inserted_tmp(drv);
-#endif
+               return sasi_hdd[drv >> 1]->mounted(drv & 1);
        }
        return false;
 }
@@ -802,35 +790,13 @@ uint32_t VM::is_hard_disk_accessed()
        uint32_t status = 0;
        
        for(int drv = 0; drv < USE_HARD_DISK; drv++) {
-               if(sasi_hdd[drv >> 1]->get_disk_handler(drv & 1)->accessed()) {
+               if(sasi_hdd[drv >> 1]->accessed(drv & 1)) {
                        status |= 1 << drv;
                }
        }
        return status;
 }
 
-void VM::open_hard_disk_tmp(int drv, const _TCHAR* file_path)
-{
-       if(drv < USE_HARD_DISK) {
-               sasi_hdd[drv >> 1]->get_disk_handler(drv & 1)->open(file_path);
-       }
-}
-
-void VM::close_hard_disk_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               sasi_hdd[drv >> 1]->get_disk_handler(drv & 1)->close();
-       }
-}
-
-bool VM::is_hard_disk_inserted_tmp(int drv)
-{
-       if(drv < USE_HARD_DISK) {
-               return sasi_hdd[drv >> 1]->get_disk_handler(drv & 1)->mounted();
-       }
-       return false;
-}
-
 void VM::play_tape(int drv, const _TCHAR* file_path)
 {
        bool value = drec->play_tape(file_path);
index 49708d5..fc1804c 100644 (file)
@@ -95,7 +95,6 @@
 #define USE_FLOPPY_DISK                2
 #define BASE_FLOPPY_DISK_NUM   0
 #define USE_HARD_DISK          4
-#define OPEN_HARD_DISK_IN_RESET
 #define USE_TAPE               1
 #define USE_TAPE_BUTTON
 #ifdef _X1TWIN
@@ -261,7 +260,7 @@ class HD46505;
 class I8255;
 class IO;
 class MB8877;
-class SCSI_HDD;
+class SASI_HDD;
 class SCSI_HOST;
 class YM2151;
 //class YM2203;
@@ -307,7 +306,7 @@ protected:
        I8255* pio;
        IO* io;
        MB8877* fdc;
-       SCSI_HDD* sasi_hdd[(USE_HARD_DISK >> 1) + (USE_HARD_DISK & 1)];
+       SASI_HDD* sasi_hdd[(USE_HARD_DISK >> 1) + (USE_HARD_DISK & 1)];
        SCSI_HOST* sasi_host;
        YM2151* opm1;
        YM2151* opm2;
@@ -342,13 +341,6 @@ protected:
        bool pseudo_sub_cpu;
        int sound_type;
        
-#if defined(OPEN_HARD_DISK_IN_RESET)
-       _TCHAR hd_file_path[USE_HARD_DISK][_MAX_PATH];
-#endif
-       void open_hard_disk_tmp(int drv, const _TCHAR* file_path);
-       void close_hard_disk_tmp(int drv);
-       bool is_hard_disk_inserted_tmp(int drv);
-       
 #ifdef _X1TWIN
        // device for pce
        EVENT* pceevent;
index 3dbdda9..85ae925 100644 (file)
@@ -2600,7 +2600,7 @@ void open_hard_disk_dialog(HWND hWnd, int drv)
 {
        _TCHAR* path = get_open_file_name(
                hWnd,
-               _T("Supported Files (*.thd;*.nhd;*.hdi;*.dat)\0*.thd;*.nhd;*.hdi;*.dat\0All Files (*.*)\0*.*\0\0"),
+               _T("Supported Files (*.thd;*.nhd;*.hdi;*.hdd;*.dat)\0*.thd;*.nhd;*.hdi;*.hdd;*.dat\0All Files (*.*)\0*.*\0\0"),
                _T("Hard Disk"),
                config.initial_hard_disk_dir, _MAX_PATH
        );
@@ -2866,7 +2866,8 @@ void open_any_file(const _TCHAR* path)
 #if defined(USE_HARD_DISK)
        if(check_file_extension(path, _T(".thd")) || 
           check_file_extension(path, _T(".nhd")) || 
-          check_file_extension(path, _T(".hdi"))) {
+          check_file_extension(path, _T(".hdi")) || 
+          check_file_extension(path, _T(".hdd"))) {
                UPDATE_HISTORY(path, config.recent_hard_disk_path[0]);
                my_tcscpy_s(config.initial_hard_disk_dir, _MAX_PATH, get_parent_dir(path));
                emu->open_hard_disk(0, path);
index 2d45014..75dbb4e 100755 (executable)
@@ -7,7 +7,7 @@ LDCONFIG=/sbin/ldconfig
 CSP_ARCH="x86_64-linux-gnu"
 MULTIARCH="Yes"
 CSP_PREFIX=/usr/local
-CSP_GUILIB="libCSPgui.so.2.15.3 libCSPosd.so.2.13.2 libCSPemu_utils.so.2.12.2 libCSPavio.2.8.2 libCSPfmgen.so.1.3.0 libCSPcommon_vm.so.2.0.0"
+CSP_GUILIB="libCSPfmgen.so.1.4.0 libCSPcommon_vm.so.2.1.0 libCSPosd.so.2.13.2 libCSPemu_utils.so.2.12.3 libCSPgui.so.2.15.3 libCSPavio.2.9.2 "
 
 for i in "$@"; do
   case "$1" in 
diff --git a/source/tool/mz2500/create_hd.vcproj b/source/tool/mz2500/create_hd.vcproj
new file mode 100644 (file)
index 0000000..b2633a0
--- /dev/null
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="9.00"
+       Name="create_hd"
+       ProjectGUID="{7F241E68-EB84-4412-AF32-70EAF1C6C212}"
+       RootNamespace="create_hd"
+       TargetFrameworkVersion="196613"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Debug|Win32"
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                       IntermediateDirectory="$(ConfigurationName)"
+                       ConfigurationType="1"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="3"
+                               WarningLevel="3"
+                               DebugInformationFormat="4"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               GenerateDebugInformation="true"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release|Win32"
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                       IntermediateDirectory="$(ConfigurationName)"
+                       ConfigurationType="1"
+                       CharacterSet="2"
+                       WholeProgramOptimization="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="2"
+                               EnableIntrinsicFunctions="true"
+                               RuntimeLibrary="2"
+                               EnableFunctionLevelLinking="true"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               GenerateDebugInformation="true"
+                               OptimizeReferences="2"
+                               EnableCOMDATFolding="2"
+                               TargetMachine="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                       >
+                       <File
+                               RelativePath=".\create_hd.cpp"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+                       >
+               </Filter>
+               <Filter
+                       Name="Resource Files"
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+                       >
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
index 405373d..d805929 100644 (file)
@@ -45,10 +45,12 @@ copy Release\fm8.exe build_xp\fm8\.
 
 devenv.com fm7.vcproj /Rebuild Release
 devenv.com fm77.vcproj /Rebuild Release
+devenv.com fm77l4.vcproj /Rebuild Release
 devenv.com fm77av.vcproj /Rebuild Release
 mkdir build_xp\fm7
 copy Release\fm7.exe build_xp\fm7\.
 copy Release\fm77.exe build_xp\fm7\.
+copy Release\fm77l4.exe build_xp\fm7\.
 copy Release\fm77av.exe build_xp\fm7\.
 
 devenv.com fm77av40.vcproj /Rebuild Release
@@ -279,6 +281,10 @@ devenv.com pc98rl.vcproj /Rebuild Release
 mkdir build_xp\pc98rl
 copy Release\pc98rl.exe build_xp\pc98rl\.
 
+devenv.com pc98xa.vcproj /Rebuild Release
+mkdir build_xp\pc98xa
+copy Release\pc98xa.exe build_xp\pc98xa\.
+
 devenv.com pc98xl.vcproj /Rebuild Release
 mkdir build_xp\pc98xl
 copy Release\pc98xl.exe build_xp\pc98xl\.
diff --git a/source/vc++2008/fm77l4.vcproj b/source/vc++2008/fm77l4.vcproj
new file mode 100644 (file)
index 0000000..cbd3caa
--- /dev/null
@@ -0,0 +1,1485 @@
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="9.00"
+       Name="fm77l4"
+       ProjectGUID="{19644030-FB96-4EE0-8819-86D8D13C25A7}"
+       RootNamespace="fm77l4"
+       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/fm77l4.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_FM77L4"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               PrecompiledHeaderFile=".\Debug/fm77l4.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/fm77l4.exe"
+                               LinkIncremental="2"
+                               SuppressStartupBanner="true"
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Debug/fm77l4.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/fm77l4.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/fm77l4.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="2"
+                               InlineFunctionExpansion="2"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_FM77L4"
+                               StringPooling="true"
+                               RuntimeLibrary="0"
+                               EnableFunctionLevelLinking="true"
+                               EnableEnhancedInstructionSet="2"
+                               PrecompiledHeaderFile=".\Release/fm77l4.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/fm77l4.exe"
+                               LinkIncremental="1"
+                               SuppressStartupBanner="true"
+                               ProgramDatabaseFile=".\Release/fm77l4.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/fm77l4.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\and.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <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\disk.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\hd46505.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8251.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\mb8877.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\mc6809.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\mc6809_base.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\pcm1bit.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\prnfile.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\ym2203.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>
+                               <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\fm7\display.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\dummydevice.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\floppy.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\floppy_2HD.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_mainio.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_mainmem.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\jcommcard.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\joystick.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\kanjirom.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\keyboard.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\mainmem_mmr.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\mainmem_page2.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\mainmem_readseq.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\mainmem_utils.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\mainmem_writeseq.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\sound.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\vram.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\and.h"
+                                       >
+                               </File>
+                               <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\disk.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\event.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\hd46505.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8251.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\mb8877.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\mc6809.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\memory.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\noise.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pcm1bit.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\prnfile.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\vm.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\ym2203.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\z80.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\fm7\dummydevice.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_common.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_display.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_keyboard.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_mainio.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\fm7_mainmem.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\jcommcard.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\joystick.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\fm7\keyboard_tables.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\fm77l4.ico"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\src\res\fm77l4.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>
+                       <File
+                               RelativePath="..\src\res\indicator\access_off.bmp"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\src\res\indicator\access_on.bmp"
+                               >
+                       </File>
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
index d9b04e5..bcded95 100644 (file)
                                        </FileConfiguration>
                                </File>
                                <File
+                                       RelativePath="..\src\vm\harddisk.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\i286.cpp"
                                        >
                                        <FileConfiguration
                                        </FileConfiguration>
                                </File>
                                <File
+                                       RelativePath="..\src\vm\scsi_dev.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_hdd.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_host.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\upd71071.cpp"
                                        >
                                        <FileConfiguration
                                        </FileConfiguration>
                                </File>
                                <File
+                                       RelativePath="..\src\vm\mz2800\sasi.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\mz2800\serial.cpp"
                                        >
                                        <FileConfiguration
                                        >
                                </File>
                                <File
+                                       RelativePath="..\src\vm\harddisk.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\i286.h"
                                        >
                                </File>
                                        >
                                </File>
                                <File
+                                       RelativePath="..\src\vm\scsi_dev.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_hdd.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_host.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\upd71071.h"
                                        >
                                </File>
                                        >
                                </File>
                                <File
+                                       RelativePath="..\src\vm\mz2800\sasi.h"
+                                       >
+                               </File>
+                               <File
                                        RelativePath="..\src\vm\mz2500\serial.h"
                                        >
                                </File>
diff --git a/source/vc++2008/pc98xa.vcproj b/source/vc++2008/pc98xa.vcproj
new file mode 100644 (file)
index 0000000..94a13de
--- /dev/null
@@ -0,0 +1,1545 @@
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="9.00"
+       Name="pc98xa"
+       ProjectGUID="{699AB843-1860-4ABF-B52C-D6A84D0F81E8}"
+       RootNamespace="pc98xa"
+       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/pc98xa.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="0"
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_PC98XA"
+                               MinimalRebuild="true"
+                               BasicRuntimeChecks="3"
+                               RuntimeLibrary="1"
+                               PrecompiledHeaderFile=".\Debug/pc98xa.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/pc98xa.exe"
+                               LinkIncremental="2"
+                               SuppressStartupBanner="true"
+                               GenerateDebugInformation="true"
+                               ProgramDatabaseFile=".\Debug/pc98xa.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/pc98xa.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/pc98xa.tlb"
+                               HeaderFileName=""
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               Optimization="2"
+                               InlineFunctionExpansion="2"
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_PC98XA"
+                               StringPooling="true"
+                               RuntimeLibrary="0"
+                               EnableFunctionLevelLinking="true"
+                               EnableEnhancedInstructionSet="2"
+                               PrecompiledHeaderFile=".\Release/pc98xa.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/pc98xa.exe"
+                               LinkIncremental="1"
+                               SuppressStartupBanner="true"
+                               ProgramDatabaseFile=".\Release/pc98xa.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/pc98xa.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\disk.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\harddisk.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i286.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8237.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8251.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8253.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\i8259.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\ls244.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\pcm1bit.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\prnfile.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_dev.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_hdd.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_host.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\tms3631.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd1990a.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd7220.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd765a.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\ym2203.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\pc9801\cpureg.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\display.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\dmareg.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\floppy.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\fmsound.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\joystick.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\keyboard.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\membus.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\mouse.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\pc9801.cpp"
+                                       >
+                                       <FileConfiguration
+                                               Name="Debug|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                                       <FileConfiguration
+                                               Name="Release|Win32"
+                                               >
+                                               <Tool
+                                                       Name="VCCLCompilerTool"
+                                                       PreprocessorDefinitions=""
+                                               />
+                                       </FileConfiguration>
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\sasi.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\debugger.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\device.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\disk.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\event.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\harddisk.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i286.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8237.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8251.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8253.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8255.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\i8259.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\io.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\ls244.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\pcm1bit.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\prnfile.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_dev.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_hdd.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\scsi_host.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\tms3631.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd1990a.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd7220.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\upd765a.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\vm.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\ym2203.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\pc9801\cpureg.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\display.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\dmareg.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\floppy.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\fmsound.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\joystick.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\keyboard.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\membus.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\mouse.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\pc9801.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\src\vm\pc9801\sasi.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\pc98xa.ico"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\src\res\pc98xa.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>
+                       <File
+                               RelativePath="..\src\res\indicator\access_off.bmp"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\src\res\indicator\access_on.bmp"
+                               >
+                       </File>
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
index a9b164d..c7d151f 100644 (file)
@@ -54,11 +54,14 @@ devenv.com fm7.vcxproj /Rebuild Release
 call :clean
 devenv.com fm77.vcxproj /Rebuild Release
 call :clean
+devenv.com fm77l4.vcxproj /Rebuild Release
+call :clean
 devenv.com fm77av.vcxproj /Rebuild Release
 call :clean
 mkdir build_vc12\fm7
 copy binary_vc12\fm7.exe build_vc12\fm7\.
 copy binary_vc12\fm77.exe build_vc12\fm7\.
+copy binary_vc12\fm77l4.exe build_vc12\fm7\.
 copy binary_vc12\fm77av.exe build_vc12\fm7\.
 
 devenv.com fm77av40.vcxproj /Rebuild Release
@@ -354,6 +357,11 @@ call :clean
 mkdir build_vc12\pc98rl
 copy binary_vc12\pc98rl.exe build_vc12\pc98rl\.
 
+devenv.com pc98xa.vcxproj /Rebuild Release
+call :clean
+mkdir build_vc12\pc98xa
+copy binary_vc12\pc98xa.exe build_vc12\pc98xa\.
+
 devenv.com pc98xl.vcxproj /Rebuild Release
 call :clean
 mkdir build_vc12\pc98xl
diff --git a/source/vc++2013/fm77l4.vcxproj b/source/vc++2013/fm77l4.vcxproj
new file mode 100644 (file)
index 0000000..0246296
--- /dev/null
@@ -0,0 +1,267 @@
+<?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>{19644030-FB96-4EE0-8819-86D8D13C25A7}</ProjectGuid>
+    <RootNamespace>fm77l4</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/fm77l4.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_FM77L4;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\Debug/fm77l4.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/fm77l4.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\Debug/fm77l4.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/fm77l4.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/fm77l4.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_FM77L4;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeaderOutputFile>.\Release/fm77l4.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/fm77l4.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\Release/fm77l4.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/fm77l4.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\and.cpp" />
+    <ClCompile Include="..\src\vm\ay_3_891x.cpp" />
+    <ClCompile Include="..\src\vm\datarec.cpp" />
+    <ClCompile Include="..\src\vm\disk.cpp" />
+    <ClCompile Include="..\src\vm\event.cpp" />
+    <ClCompile Include="..\src\vm\hd46505.cpp" />
+    <ClCompile Include="..\src\vm\i8251.cpp" />
+    <ClCompile Include="..\src\vm\mb8877.cpp" />
+    <ClCompile Include="..\src\vm\mc6809.cpp" />
+    <ClCompile Include="..\src\vm\mc6809_base.cpp" />
+    <ClCompile Include="..\src\vm\memory.cpp" />
+    <ClCompile Include="..\src\vm\noise.cpp" />
+    <ClCompile Include="..\src\vm\pcm1bit.cpp" />
+    <ClCompile Include="..\src\vm\prnfile.cpp" />
+    <ClCompile Include="..\src\vm\ym2203.cpp" />
+    <ClCompile Include="..\src\vm\z80.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\fm7\display.cpp" />
+    <ClCompile Include="..\src\vm\fm7\dummydevice.cpp" />
+    <ClCompile Include="..\src\vm\fm7\floppy.cpp" />
+    <ClCompile Include="..\src\vm\fm7\floppy_2HD.cpp" />
+    <ClCompile Include="..\src\vm\fm7\fm7.cpp" />
+    <ClCompile Include="..\src\vm\fm7\fm7_mainio.cpp" />
+    <ClCompile Include="..\src\vm\fm7\fm7_mainmem.cpp" />
+    <ClCompile Include="..\src\vm\fm7\jcommcard.cpp" />
+    <ClCompile Include="..\src\vm\fm7\joystick.cpp" />
+    <ClCompile Include="..\src\vm\fm7\kanjirom.cpp" />
+    <ClCompile Include="..\src\vm\fm7\keyboard.cpp" />
+    <ClCompile Include="..\src\vm\fm7\mainmem_mmr.cpp" />
+    <ClCompile Include="..\src\vm\fm7\mainmem_page2.cpp" />
+    <ClCompile Include="..\src\vm\fm7\mainmem_readseq.cpp" />
+    <ClCompile Include="..\src\vm\fm7\mainmem_utils.cpp" />
+    <ClCompile Include="..\src\vm\fm7\mainmem_writeseq.cpp" />
+    <ClCompile Include="..\src\vm\fm7\sound.cpp" />
+    <ClCompile Include="..\src\vm\fm7\vram.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\and.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\disk.h" />
+    <ClInclude Include="..\src\vm\event.h" />
+    <ClInclude Include="..\src\vm\hd46505.h" />
+    <ClInclude Include="..\src\vm\i8251.h" />
+    <ClInclude Include="..\src\vm\mb8877.h" />
+    <ClInclude Include="..\src\vm\mc6809.h" />
+    <ClInclude Include="..\src\vm\memory.h" />
+    <ClInclude Include="..\src\vm\noise.h" />
+    <ClInclude Include="..\src\vm\pcm1bit.h" />
+    <ClInclude Include="..\src\vm\prnfile.h" />
+    <ClInclude Include="..\src\vm\vm.h" />
+    <ClInclude Include="..\src\vm\ym2203.h" />
+    <ClInclude Include="..\src\vm\z80.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\fm7\dummydevice.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7_common.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7_display.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7_keyboard.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7_mainio.h" />
+    <ClInclude Include="..\src\vm\fm7\fm7_mainmem.h" />
+    <ClInclude Include="..\src\vm\fm7\jcommcard.h" />
+    <ClInclude Include="..\src\vm\fm7\joystick.h" />
+    <ClInclude Include="..\src\vm\fm7\keyboard_tables.h" />
+    <ClInclude Include="..\src\res\resource.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="..\src\res\fm77l4.ico" />
+    <Image Include="..\src\res\indicator\access_off.bmp" />
+    <Image Include="..\src\res\indicator\access_on.bmp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\src\res\fm77l4.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
diff --git a/source/vc++2013/fm77l4.vcxproj.filters b/source/vc++2013/fm77l4.vcxproj.filters
new file mode 100644 (file)
index 0000000..2649112
--- /dev/null
@@ -0,0 +1,355 @@
+<?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>{10ef7a33-3af8-4679-ac06-3b46075e2af0}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="Source Files\EMU Source Files">
+      <UniqueIdentifier>{c96d4b4d-8ff4-4d46-9853-4c1b4334c200}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\OSD Source Files">
+      <UniqueIdentifier>{e85c6a45-3836-4385-83eb-18c94e85bab8}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Common Source Files">
+      <UniqueIdentifier>{012e62c8-23a2-430e-82dc-09e2afa6ff70}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Common Source Files\fmgen Source Files">
+      <UniqueIdentifier>{92a9973f-418e-44ec-95dd-3e1cdc4dd832}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Driver Source Files">
+      <UniqueIdentifier>{e9db7648-a2b3-4f4c-84ae-c0a4b52d041a}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{5a937306-3529-49fb-8f3a-aca51d816fd4}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>
+    </Filter>
+    <Filter Include="Header Files\EMU Header Files">
+      <UniqueIdentifier>{0e1c7b9d-6a66-4cf7-a7f9-1e74acccc9ec}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\OSD Header Files">
+      <UniqueIdentifier>{7b317943-722a-406b-bda1-fed6a771c875}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\VM Common Header Files">
+      <UniqueIdentifier>{31929b93-5ac2-44ad-90e2-83ca343e36f8}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\VM Common Header Files\fmgen Header Files">
+      <UniqueIdentifier>{d35244d4-a7be-4950-bcfe-10e56ebbf9e9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\VM Driver Header Files">
+      <UniqueIdentifier>{f1c9f606-1824-406e-8460-dcc967a514ea}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{3d5e5fcc-6af8-404e-b278-0c45a58e6365}</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\and.cpp">
+      <Filter>Source Files\VM Common 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\disk.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\hd46505.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\i8251.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\mb8877.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\mc6809.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\mc6809_base.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\pcm1bit.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\prnfile.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\ym2203.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\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\fm7\display.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\dummydevice.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\floppy.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\floppy_2HD.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\fm7.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\fm7_mainio.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\fm7_mainmem.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\jcommcard.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\joystick.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\kanjirom.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\keyboard.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\mainmem_mmr.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\mainmem_page2.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\mainmem_readseq.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\mainmem_utils.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\mainmem_writeseq.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\sound.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\fm7\vram.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\and.h">
+      <Filter>Header Files\VM Common 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\disk.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\hd46505.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\i8251.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\mb8877.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\mc6809.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\pcm1bit.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\prnfile.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\ym2203.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\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\fm7\dummydevice.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7_common.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7_display.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7_keyboard.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7_mainio.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\fm7_mainmem.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\jcommcard.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\joystick.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\fm7\keyboard_tables.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\fm77l4.ico">
+      <Filter>Resource Files</Filter>
+    </Image>
+    <Image Include="..\src\res\indicator\access_off.bmp">
+      <Filter>Resource Files</Filter>
+    </Image>
+    <Image Include="..\src\res\indicator\access_on.bmp">
+      <Filter>Resource Files</Filter>
+    </Image>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\src\res\fm77l4.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index eb62875..1fd85a9 100644 (file)
     <ClCompile Include="..\src\win32\winmain.cpp" />
     <ClCompile Include="..\src\vm\disk.cpp" />
     <ClCompile Include="..\src\vm\event.cpp" />
+    <ClCompile Include="..\src\vm\harddisk.cpp" />
     <ClCompile Include="..\src\vm\i286.cpp" />
     <ClCompile Include="..\src\vm\i8253.cpp" />
     <ClCompile Include="..\src\vm\i8255.cpp" />
     <ClCompile Include="..\src\vm\pcm1bit.cpp" />
     <ClCompile Include="..\src\vm\prnfile.cpp" />
     <ClCompile Include="..\src\vm\rp5c01.cpp" />
+    <ClCompile Include="..\src\vm\scsi_dev.cpp" />
+    <ClCompile Include="..\src\vm\scsi_hdd.cpp" />
+    <ClCompile Include="..\src\vm\scsi_host.cpp" />
     <ClCompile Include="..\src\vm\upd71071.cpp" />
     <ClCompile Include="..\src\vm\ym2203.cpp" />
     <ClCompile Include="..\src\vm\z80pio.cpp" />
     <ClCompile Include="..\src\vm\mz2800\mz2800.cpp" />
     <ClCompile Include="..\src\vm\mz2800\printer.cpp" />
     <ClCompile Include="..\src\vm\mz2800\reset.cpp" />
+    <ClCompile Include="..\src\vm\mz2800\sasi.cpp" />
     <ClCompile Include="..\src\vm\mz2800\serial.cpp" />
     <ClCompile Include="..\src\vm\mz2800\sysport.cpp" />
   </ItemGroup>
     <ClInclude Include="..\src\vm\device.h" />
     <ClInclude Include="..\src\vm\disk.h" />
     <ClInclude Include="..\src\vm\event.h" />
+    <ClInclude Include="..\src\vm\harddisk.h" />
     <ClInclude Include="..\src\vm\i286.h" />
     <ClInclude Include="..\src\vm\i8253.h" />
     <ClInclude Include="..\src\vm\i8255.h" />
     <ClInclude Include="..\src\vm\pcm1bit.h" />
     <ClInclude Include="..\src\vm\prnfile.h" />
     <ClInclude Include="..\src\vm\rp5c01.h" />
+    <ClInclude Include="..\src\vm\scsi_dev.h" />
+    <ClInclude Include="..\src\vm\scsi_hdd.h" />
+    <ClInclude Include="..\src\vm\scsi_host.h" />
     <ClInclude Include="..\src\vm\upd71071.h" />
     <ClInclude Include="..\src\vm\vm.h" />
     <ClInclude Include="..\src\vm\ym2203.h" />
     <ClInclude Include="..\src\vm\mz2800\mz2800.h" />
     <ClInclude Include="..\src\vm\mz2800\printer.h" />
     <ClInclude Include="..\src\vm\mz2800\reset.h" />
+    <ClInclude Include="..\src\vm\mz2800\sasi.h" />
     <ClInclude Include="..\src\vm\mz2500\serial.h" />
     <ClInclude Include="..\src\vm\mz2800\sysport.h" />
     <ClInclude Include="..\src\res\resource.h" />
index fed23ff..fd4c0a1 100644 (file)
@@ -96,6 +96,9 @@
     <ClCompile Include="..\src\vm\event.cpp">
       <Filter>Source Files\VM Common Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\src\vm\harddisk.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\src\vm\i286.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\scsi_dev.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\scsi_hdd.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\scsi_host.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\src\vm\upd71071.cpp">
       <Filter>Source Files\VM Common Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\src\vm\mz2800\reset.cpp">
       <Filter>Source Files\VM Driver Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\src\vm\mz2800\sasi.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\src\vm\mz2800\serial.cpp">
       <Filter>Source Files\VM Driver Source Files</Filter>
     </ClCompile>
     <ClInclude Include="..\src\vm\event.h">
       <Filter>Header Files\VM Common Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\vm\harddisk.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\vm\i286.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\scsi_dev.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\scsi_hdd.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\scsi_host.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\vm\upd71071.h">
       <Filter>Header Files\VM Common Header Files</Filter>
     </ClInclude>
     <ClInclude Include="..\src\vm\mz2800\reset.h">
       <Filter>Header Files\VM Driver Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\vm\mz2800\sasi.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\vm\mz2500\serial.h">
       <Filter>Header Files\VM Driver Header Files</Filter>
     </ClInclude>
diff --git a/source/vc++2013/pc98xa.vcxproj b/source/vc++2013/pc98xa.vcxproj
new file mode 100644 (file)
index 0000000..b2f3d14
--- /dev/null
@@ -0,0 +1,278 @@
+<?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>{699AB843-1860-4ABF-B52C-D6A84D0F81E8}</ProjectGuid>
+    <RootNamespace>pc98xa</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/pc98xa.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_PC98XA;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile>.\Debug/pc98xa.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/pc98xa.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\Debug/pc98xa.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/pc98xa.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/pc98xa.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_PC98XA;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeaderOutputFile>.\Release/pc98xa.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/pc98xa.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ProgramDatabaseFile>.\Release/pc98xa.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/pc98xa.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\disk.cpp" />
+    <ClCompile Include="..\src\vm\event.cpp" />
+    <ClCompile Include="..\src\vm\harddisk.cpp" />
+    <ClCompile Include="..\src\vm\i286.cpp" />
+    <ClCompile Include="..\src\vm\i8237.cpp" />
+    <ClCompile Include="..\src\vm\i8251.cpp" />
+    <ClCompile Include="..\src\vm\i8253.cpp" />
+    <ClCompile Include="..\src\vm\i8255.cpp" />
+    <ClCompile Include="..\src\vm\i8259.cpp" />
+    <ClCompile Include="..\src\vm\io.cpp" />
+    <ClCompile Include="..\src\vm\ls244.cpp" />
+    <ClCompile Include="..\src\vm\memory.cpp" />
+    <ClCompile Include="..\src\vm\noise.cpp" />
+    <ClCompile Include="..\src\vm\not.cpp" />
+    <ClCompile Include="..\src\vm\pcm1bit.cpp" />
+    <ClCompile Include="..\src\vm\prnfile.cpp" />
+    <ClCompile Include="..\src\vm\scsi_dev.cpp" />
+    <ClCompile Include="..\src\vm\scsi_hdd.cpp" />
+    <ClCompile Include="..\src\vm\scsi_host.cpp" />
+    <ClCompile Include="..\src\vm\tms3631.cpp" />
+    <ClCompile Include="..\src\vm\upd1990a.cpp" />
+    <ClCompile Include="..\src\vm\upd7220.cpp" />
+    <ClCompile Include="..\src\vm\upd765a.cpp" />
+    <ClCompile Include="..\src\vm\ym2203.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\pc9801\cpureg.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\display.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\dmareg.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\floppy.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\fmsound.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\joystick.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\keyboard.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\membus.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\mouse.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\pc9801.cpp" />
+    <ClCompile Include="..\src\vm\pc9801\sasi.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\debugger.h" />
+    <ClInclude Include="..\src\vm\device.h" />
+    <ClInclude Include="..\src\vm\disk.h" />
+    <ClInclude Include="..\src\vm\event.h" />
+    <ClInclude Include="..\src\vm\harddisk.h" />
+    <ClInclude Include="..\src\vm\i286.h" />
+    <ClInclude Include="..\src\vm\i8237.h" />
+    <ClInclude Include="..\src\vm\i8251.h" />
+    <ClInclude Include="..\src\vm\i8253.h" />
+    <ClInclude Include="..\src\vm\i8255.h" />
+    <ClInclude Include="..\src\vm\i8259.h" />
+    <ClInclude Include="..\src\vm\io.h" />
+    <ClInclude Include="..\src\vm\ls244.h" />
+    <ClInclude Include="..\src\vm\memory.h" />
+    <ClInclude Include="..\src\vm\noise.h" />
+    <ClInclude Include="..\src\vm\not.h" />
+    <ClInclude Include="..\src\vm\pcm1bit.h" />
+    <ClInclude Include="..\src\vm\prnfile.h" />
+    <ClInclude Include="..\src\vm\scsi_dev.h" />
+    <ClInclude Include="..\src\vm\scsi_hdd.h" />
+    <ClInclude Include="..\src\vm\scsi_host.h" />
+    <ClInclude Include="..\src\vm\tms3631.h" />
+    <ClInclude Include="..\src\vm\upd1990a.h" />
+    <ClInclude Include="..\src\vm\upd7220.h" />
+    <ClInclude Include="..\src\vm\upd765a.h" />
+    <ClInclude Include="..\src\vm\vm.h" />
+    <ClInclude Include="..\src\vm\ym2203.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\pc9801\cpureg.h" />
+    <ClInclude Include="..\src\vm\pc9801\display.h" />
+    <ClInclude Include="..\src\vm\pc9801\dmareg.h" />
+    <ClInclude Include="..\src\vm\pc9801\floppy.h" />
+    <ClInclude Include="..\src\vm\pc9801\fmsound.h" />
+    <ClInclude Include="..\src\vm\pc9801\joystick.h" />
+    <ClInclude Include="..\src\vm\pc9801\keyboard.h" />
+    <ClInclude Include="..\src\vm\pc9801\membus.h" />
+    <ClInclude Include="..\src\vm\pc9801\mouse.h" />
+    <ClInclude Include="..\src\vm\pc9801\pc9801.h" />
+    <ClInclude Include="..\src\vm\pc9801\sasi.h" />
+    <ClInclude Include="..\src\res\resource.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="..\src\res\pc98xa.ico" />
+    <Image Include="..\src\res\indicator\access_off.bmp" />
+    <Image Include="..\src\res\indicator\access_on.bmp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\src\res\pc98xa.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
diff --git a/source/vc++2013/pc98xa.vcxproj.filters b/source/vc++2013/pc98xa.vcxproj.filters
new file mode 100644 (file)
index 0000000..0a3ef51
--- /dev/null
@@ -0,0 +1,388 @@
+<?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>{c1bc22e0-d975-4459-bc92-74bf57d0ca3d}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="Source Files\EMU Source Files">
+      <UniqueIdentifier>{7399e7ae-51e6-4508-812b-a8c3b9b77b31}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\OSD Source Files">
+      <UniqueIdentifier>{bd04e394-1f95-4fe9-aaac-23d9c562f4f6}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Common Source Files">
+      <UniqueIdentifier>{c35f19a4-c556-4bf6-9ffd-49c23634fb9a}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Common Source Files\fmgen Source Files">
+      <UniqueIdentifier>{298bdf7e-477c-4ac4-b56e-15e1d4bdf968}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Source Files\VM Driver Source Files">
+      <UniqueIdentifier>{ff64cbd3-aba2-4480-93be-f3a323e56aef}</UniqueIdentifier>
+      <Extensions>cpp</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{46709b1d-d844-48e9-bfac-a4878530d336}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>
+    </Filter>
+    <Filter Include="Header Files\EMU Header Files">
+      <UniqueIdentifier>{ea269616-3959-4490-8c68-6d6b8103d43c}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\OSD Header Files">
+      <UniqueIdentifier>{d56ae9bc-0e13-4883-8407-37e4be658359}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\VM Common Header Files">
+      <UniqueIdentifier>{c686b539-5a19-48ff-9577-9948827c3564}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Header Files\VM Common Header Files\fmgen Header Files">
+      <UniqueIdentifier>{435e5c08-d7e7-4ea5-9a98-b006f96e0b0a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\VM Driver Header Files">
+      <UniqueIdentifier>{4df0faad-cdc5-4edb-b596-dc6e6c612db7}</UniqueIdentifier>
+      <Extensions>h</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{d2b292c8-0a0f-401d-80c4-f1611187bcf1}</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\disk.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\harddisk.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\i286.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\i8237.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\i8251.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\i8253.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\i8259.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\ls244.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\pcm1bit.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\prnfile.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\scsi_dev.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\scsi_hdd.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\scsi_host.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\tms3631.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\upd1990a.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\upd7220.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\upd765a.cpp">
+      <Filter>Source Files\VM Common Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\ym2203.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\pc9801\cpureg.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\display.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\dmareg.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\floppy.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\fmsound.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\joystick.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\keyboard.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\membus.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\mouse.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\pc9801.cpp">
+      <Filter>Source Files\VM Driver Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\vm\pc9801\sasi.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\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\disk.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\harddisk.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\i286.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\i8237.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\i8251.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\i8253.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\i8259.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\ls244.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\pcm1bit.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\prnfile.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\scsi_dev.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\scsi_hdd.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\scsi_host.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\tms3631.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\upd1990a.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\upd7220.h">
+      <Filter>Header Files\VM Common Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\upd765a.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\ym2203.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\pc9801\cpureg.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\display.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\dmareg.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\floppy.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\fmsound.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\joystick.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\keyboard.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\membus.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\mouse.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\pc9801.h">
+      <Filter>Header Files\VM Driver Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\vm\pc9801\sasi.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\pc98xa.ico">
+      <Filter>Resource Files</Filter>
+    </Image>
+    <Image Include="..\src\res\indicator\access_off.bmp">
+      <Filter>Resource Files</Filter>
+    </Image>
+    <Image Include="..\src\res\indicator\access_on.bmp">
+      <Filter>Resource Files</Filter>
+    </Image>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\src\res\pc98xa.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file