-/*\r
- TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'\r
-\r
- Author : Takeda.Toshiya\r
- Date : 2006.09.20 -\r
-\r
- [ floppy ]\r
-*/\r
-\r
-#include "floppy.h"\r
-#include "../upd765a.h"\r
-#include "../../fileio.h"\r
-\r
-void FLOPPY::initialize()\r
-{\r
- intr = false;\r
-}\r
-\r
-void FLOPPY::write_io8(uint32 addr, uint32 data)\r
-{\r
- switch(addr & 0xff) {\r
- case 0xe0:\r
- // tc off\r
- d_fdc->write_signal(SIG_UPD765A_TC, 0, 1);\r
- break;\r
- case 0xe2:\r
- // tc on\r
- d_fdc->write_signal(SIG_UPD765A_TC, 1, 1);\r
- break;\r
- case 0xe6:\r
- // fdc reset\r
- if(data & 0x80) {\r
- d_fdc->reset();\r
- }\r
- // motor on/off\r
- d_fdc->write_signal(SIG_UPD765A_MOTOR, data, 0x40);\r
- break;\r
- }\r
-}\r
-\r
-uint32 FLOPPY::read_io8(uint32 addr)\r
-{\r
- switch(addr & 0xff) {\r
- case 0xe6:\r
- // fdc intr\r
- return intr ? 0x80 : 0;\r
- }\r
- return 0xff;\r
-}\r
-\r
-void FLOPPY::write_signal(int id, uint32 data, uint32 mask)\r
-{\r
- if(id == SIG_FLOPPY_INTR) {\r
- intr = ((data & mask) != 0);\r
- }\r
-}\r
-\r
-#define STATE_VERSION 1\r
-\r
-void FLOPPY::save_state(FILEIO* state_fio)\r
-{\r
- state_fio->FputUint32(STATE_VERSION);\r
- state_fio->FputInt32(this_device_id);\r
- \r
- state_fio->FputBool(intr);\r
-}\r
-\r
-bool FLOPPY::load_state(FILEIO* state_fio)\r
-{\r
- if(state_fio->FgetUint32() != STATE_VERSION) {\r
- return false;\r
- }\r
- if(state_fio->FgetInt32() != this_device_id) {\r
- return false;\r
- }\r
- intr = state_fio->FgetBool();\r
- return true;\r
-}\r
-\r
+/*
+ TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'
+
+ Author : Takeda.Toshiya
+ Date : 2006.09.20 -
+
+ [ floppy ]
+*/
+
+#include "floppy.h"
+#include "../upd765a.h"
+
+namespace PASOPIA7 {
+
+void FLOPPY::initialize()
+{
+ intr = false;
+}
+
+void FLOPPY::write_io8(uint32_t addr, uint32_t data)
+{
+ switch(addr & 0xff) {
+ case 0xe0:
+ // tc off
+ d_fdc->write_signal(SIG_UPD765A_TC, 0, 1);
+ break;
+ case 0xe2:
+ // tc on
+ d_fdc->write_signal(SIG_UPD765A_TC, 1, 1);
+ break;
+ case 0xe6:
+ // fdc reset
+ if(data & 0x80) {
+ d_fdc->reset();
+ }
+ // motor on/off
+ d_fdc->write_signal(SIG_UPD765A_MOTOR, data, 0x40);
+ break;
+ }
+}
+
+uint32_t FLOPPY::read_io8(uint32_t addr)
+{
+ switch(addr & 0xff) {
+ case 0xe6:
+ // fdc intr
+ return intr ? 0x80 : 0;
+ }
+ return 0xff;
+}
+
+void FLOPPY::write_signal(int id, uint32_t data, uint32_t mask)
+{
+ if(id == SIG_FLOPPY_INTR) {
+ intr = ((data & mask) != 0);
+ }
+}
+
+#define STATE_VERSION 1
+
+bool FLOPPY::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ state_fio->StateBool(intr);
+ return true;
+}
+
+}