SHARP X1 Emulator 'eX1'
SHARP X1twin Emulator 'eX1twin'
SHARP X1turbo Emulator 'eX1turbo'
+ SHARP X1turboZ Emulator 'eX1turboZ'
Author : Takeda.Toshiya
Date : 2009.03.14-
#define EVENT_MOTOR_ON 0
#define EVENT_MOTOR_OFF 1
+namespace X1 {
+
void FLOPPY::reset()
{
register_id = -1;
}
-void FLOPPY::write_io8(uint32 addr, uint32 data)
+void FLOPPY::write_io8(uint32_t addr, uint32_t data)
{
switch(addr) {
case 0xffc:
}
#ifdef _X1TURBO_FEATURE
-uint32 FLOPPY::read_io8(uint32 addr)
+uint32_t FLOPPY::read_io8(uint32_t addr)
{
switch(addr) {
case 0xffc: // FM
// d_fdc->set_drive_rpm(prev & 3, 360);
return 0xff;
case 0xfff: // 2D/2DD
- d_fdc->set_drive_type(prev & 3, DRIVE_TYPE_2DD);
+ 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);
+ }
// d_fdc->set_drive_rpm(prev & 3, 300);
return 0xff;
}
register_id = -1;
}
-#define STATE_VERSION 1
+#define STATE_VERSION 3
-void FLOPPY::save_state(FILEIO* state_fio)
+bool FLOPPY::process_state(FILEIO* state_fio, bool loading)
{
- state_fio->FputUint32(STATE_VERSION);
- state_fio->FputInt32(this_device_id);
-
- state_fio->FputInt32(prev);
- state_fio->FputBool(motor_on);
- state_fio->FputInt32(register_id);
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ state_fio->StateInt32(prev);
+ state_fio->StateBool(motor_on);
+ state_fio->StateInt32(register_id);
+ return true;
}
-bool FLOPPY::load_state(FILEIO* state_fio)
-{
- if(state_fio->FgetUint32() != STATE_VERSION) {
- return false;
- }
- if(state_fio->FgetInt32() != this_device_id) {
- return false;
- }
- prev = state_fio->FgetInt32();
- motor_on = state_fio->FgetBool();
- register_id = state_fio->FgetInt32();
- return true;
}
-