// set contexts
event->set_context_cpu(cpu);
event->set_context_sound(drec);
+#if defined(USE_SOUND_FILES)
+ drec->load_sound_data(DATAREC_SNDFILE_PLAY, _T("CMTPLAY.WAV"));
+ drec->load_sound_data(DATAREC_SNDFILE_STOP, _T("CMTSTOP.WAV"));
+ drec->load_sound_data(DATAREC_SNDFILE_EJECT, _T("CMTEJECT.WAV"));
+#endif
drec->set_context_ear(io, SIG_IO_CMT, 1);
cpu->set_context_sod(io, SIG_IO_SOD, 1);
if(ch == 0) {
drec->set_volume(0, decibel_l, decibel_r);
}
+#if defined(USE_SOUND_FILES)
+ else if(ch == 1) {
+ drec->set_volume(2 + DATAREC_SNDFILE_EJECT, decibel_l, decibel_r);
+ }
+#endif
}
#endif
void VM::close_tape()
{
+#if defined(USE_SOUND_FILES)
+ drec->write_signal(SIG_SOUNDER_ADD + DATAREC_SNDFILE_EJECT, 1, 1);
+#endif
drec->close_tape();
io->close_tape();
}
#define I8080_MEMORY_WAIT
#define MEMORY_ADDR_MAX 0x10000
#define MEMORY_BANK_SIZE 0x2000
+#define USE_SOUND_FILES 3
// device informations for win32
#define WINDOW_MODE_BASE 2
#define USE_AUTO_KEY 5
#define USE_AUTO_KEY_RELEASE 6
#define USE_AUTO_KEY_CAPS
+#if defined(USE_SOUND_FILES)
+#define USE_SOUND_VOLUME 2
+#else
#define USE_SOUND_VOLUME 1
+#endif
#define USE_DEBUGGER
#define USE_STATE
#ifdef USE_SOUND_VOLUME
static const _TCHAR *sound_device_caption[] = {
_T("CMT"),
+#if defined(USE_SOUND_FILES)
+ _T("CMT Relay"),
+#endif
};
#endif
lcd_addr = (lcd_addr & 0xff00) | data;
break;
case 0x10:
- cmt_selected = ((data & 2) == 0);
- d_drec->write_signal(SIG_DATAREC_REMOTE, CMT_MODE_PLAY ? 1 : 0, 1);
+
+ {
+ bool cmt_selected_old = cmt_selected;;
+ cmt_selected = ((data & 2) == 0);
+ bool tmp_val = (CMT_PLAYING || CMT_RECORDING);
+ d_drec->write_signal(SIG_DATAREC_REMOTE, tmp_val ? 1 : 0, 1);
+#if defined(USE_SOUND_FILES)
+ if(cmt_selected != cmt_selected_old) {
+ if(tmp_val) {
+ d_drec->write_signal(SIG_SOUNDER_ADD + DATAREC_SNDFILE_PLAY, 1, 1);
+ } else {
+ d_drec->write_signal(SIG_SOUNDER_ADD + DATAREC_SNDFILE_STOP, 1, 1);
+ }
+ }
+#endif
+ }
break;
case 0x21:
key_column = data & 0x0f;
}
break;
case 0x43:
- cmt_mode = data & 7;
- d_drec->write_signal(SIG_DATAREC_REMOTE, CMT_MODE_PLAY ? 1 : 0, 1);
+ {
+ uint8_t cmt_mode_old = cmt_mode & 7;
+ cmt_mode = data & 7;
+ int tmp_val = (CMT_PLAYING || CMT_RECORDING);
+ d_drec->write_signal(SIG_DATAREC_REMOTE, tmp_val ? 1 : 0, 1);
+#if defined(USE_SOUND_FILES)
+ if(cmt_mode_old != cmt_mode) {
+ if(tmp_val) {
+ d_drec->write_signal(SIG_SOUNDER_ADD + DATAREC_SNDFILE_PLAY, 1, 1);
+ } else {
+ d_drec->write_signal(SIG_SOUNDER_ADD + DATAREC_SNDFILE_STOP, 1, 1);
+ }
+ }
+#endif
+ }
break;
}
} else {