+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)
Binary archive of retro pc emulator common source code
- 5/24/2018
+ 9/30/2018
--- What's this ?
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.)
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
-<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>
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__)
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];
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;
// 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);
// 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);
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
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
#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];
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];
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;
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"));
}
} 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]);
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;
}
}
} 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;
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;
}
}
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 {
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 {
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)
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()));
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);
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"));
}
} 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]);
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"));
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;
}
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();
void EMU::out_debug_log(const _TCHAR* format, ...)
{
+ common_initialize();
+
#ifdef _DEBUG_LOG
va_list ap;
_TCHAR buffer[1024];
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);
#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);
}
}
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';
}
}
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
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
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}\")
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));
}
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();
<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>
--- /dev/null
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Japanese resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+#pragma code_page(932)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // Japanese resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_RETURN, ID_ACCEL_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
+
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
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
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
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
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
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
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
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
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
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
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"
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
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
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
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
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
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
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
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
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
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
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
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
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
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;
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;
}
}
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;
}
}
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;
}
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;
}
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;
}
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;
}
# include "mb61vh010.h"
#endif
#if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
#endif
#include "fm7_mainio.h"
#include "hd6844.h"
#endif
#if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
#endif
#if defined(_FM8)
#include "emu.h"
#include "fm7_display.h"
#if defined(_FM77L4)
-#include "hd46505.h"
+#include "../hd46505.h"
#endif
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;
}
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++) {
// 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()
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;
}
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();
// 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
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
}
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;
}
}
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++) {
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()
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;
}
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();
#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
// 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
#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];
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;
*/
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];
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
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;
}
}
}
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)
}
}
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;
}
*/
close();
}
- void open(const _TCHAR* file_path);
void open(const _TCHAR* file_path, int default_sector_size);
void close();
bool mounted();
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;
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();
}
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;
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;
}
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;
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;
}
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) {
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);
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
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();
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()
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)
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;
}
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);
// 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
class MB8877;
class PCM1BIT;
class RP5C01;
-class SCSI_HDD;
+class SASI_HDD;
class SCSI_HOST;
class W3100A;
class YM2203;
MB8877* fdc;
PCM1BIT* pcm;
RP5C01* rtc;
- SCSI_HDD* sasi_hdd;
+ SASI_HDD* sasi_hdd;
SCSI_HOST* sasi_host;
W3100A* w3100a;
YM2203* opn;
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;
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)
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()
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)
// 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
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;
#include "../device.h"
#include "../event.h"
+#include "../disk.h"
+#include "../harddisk.h"
#include "../i8253.h"
#include "../i8255.h"
#include "../i8259.h"
//#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"
#include "mouse.h"
#include "printer.h"
#include "reset.h"
+#include "sasi.h"
#include "serial.h"
#include "sysport.h"
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);
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);
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);
} 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);
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);
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)
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)
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();
}
}
-#define STATE_VERSION 4
+#define STATE_VERSION 5
#include "../../statesub.h"
#include "../../qt/gui/csp_logger.h"
#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
class NOT;
class PCM1BIT;
class RP5C01;
-//class SASI;
+class SASI_HDD;
+class SCSI_HOST;
class UPD71071;
class YM2203;
class Z80PIO;
class MOUSE;
class PRINTER;
class RESET;
+class SASI;
class SERIAL;
class SYSPORT;
NOT* not_busy;
PCM1BIT* pcm;
RP5C01* rtc;
-// SASI* sasi;
+ SASI_HDD* sasi_hdd[4];
+ SCSI_HOST* sasi_host;
UPD71071* dma;
YM2203* opn;
Z80PIO* pio1;
MOUSE* mouse;
PRINTER* printer;
RESET* rst;
+ SASI* sasi;
SERIAL* serial;
SYSPORT* sysport;
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();
--- /dev/null
+/*
+ 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;
+}
+
--- /dev/null
+/*
+ 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
+
// 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);
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();
}
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)
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)
#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
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)
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
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)
#endif
#endif
-#define STATE_VERSION 3
+#define STATE_VERSION 4
#include "../statesub.h"
#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();
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
#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
}
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()
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)
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
}
}
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
}
}
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;
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
#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
#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
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)
// 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:
// ----------------------------------------
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) {
#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;
{
d_host = device;
}
- void set_context_hdd(SCSI_HDD* device)
+ void set_context_hdd(SASI_HDD* device)
{
d_hdd = device;
}
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;
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;
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)
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
}
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)
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)
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
{
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:
}
// change to status phase
set_dat(SCSI_STATUS_GOOD);
+ set_sense_code(SCSI_SENSE_NOSENSE);
set_phase_delay(SCSI_PHASE_STATUS, 10.0);
}
break;
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
} 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;
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;
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());
} 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;
} 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;
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());
} 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;
} 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;
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());
} 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;
} 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]);
}
}
-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"
DECL_STATE_ENTRY_FIFO(buffer);
DECL_STATE_ENTRY_UINT64(position);
DECL_STATE_ENTRY_UINT64(remain);
+ DECL_STATE_ENTRY_UINT8(sense_code);
// leave_decl_state();
}
#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
#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
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)
{
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);
}
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()
{
char product_id[16 + 1];
uint8_t device_type;
bool is_removable;
+ bool is_hot_swappable;
double seek_time;
int bytes_per_sec;
Author : Takeda.Toshiya
Date : 2016.03.01-
- [ SCSI hard disk drive ]
+ [ SCSI/SASI hard disk drive ]
*/
#include "scsi_hdd.h"
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++) {
if(unit != NULL && unit->mounted()) {
return unit->sector_size;
}
- return 512;
+ return 0;// 512;
}
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();
Author : Takeda.Toshiya
Date : 2016.03.01-
- [ SCSI hard disk drive ]
+ [ SCSI/SASI hard disk drive ]
*/
#ifndef _SCSI_HDD_H_
//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() {}
// 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)
}
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
/*
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) {
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);
*/
{
// 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);
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;
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);
void FLOPPY::reset()
{
register_id = -1;
-#ifdef _X1TURBO_FEATURE
- select_2dd = false;
-#endif
}
void FLOPPY::write_io8(uint32_t addr, uint32_t data)
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;
}
register_id = -1;
}
-#define STATE_VERSION 2
+#define STATE_VERSION 3
#include "../statesub.h"
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();
private:
MB8877 *d_fdc;
int prev;
-#ifdef _X1TURBO_FEATURE
- bool select_2dd;
-#endif
bool motor_on;
int register_id;
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
}
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();
}
}
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()
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)
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;
}
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);
#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
class I8255;
class IO;
class MB8877;
-class SCSI_HDD;
+class SASI_HDD;
class SCSI_HOST;
class YM2151;
//class YM2203;
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;
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;
{
_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
);
#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);
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
--- /dev/null
+<?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>
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
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\.
--- /dev/null
+<?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>
</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>
--- /dev/null
+<?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>
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
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
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{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
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{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
<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" />
<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>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{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
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{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