2 NEC PC-98LT Emulator 'ePC-98LT'
3 NEC PC-98HA Emulator 'eHANDY98'
5 Author : Takeda.Toshiya
13 #include "../upd765a.h"
18 for(int i = 0; i < 4; i++) {
19 d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
26 void FLOPPY::write_io8(uint32_t addr, uint32_t data)
28 switch(addr & 0xffff) {
30 d_fdc->write_io8(1, data);
33 if(!(ctrlreg & 0x80) && (data & 0x80)) {
36 d_fdc->write_signal(SIG_UPD765A_FREADY, data, 0x40);
37 d_fdc->write_signal(SIG_UPD765A_MOTOR, data, 0x08);
42 if(!(modereg & 2) && (data & 2)) {
43 d_fdc->set_drive_type(0, DRIVE_TYPE_2HD);
44 d_fdc->set_drive_type(1, DRIVE_TYPE_2HD);
45 } else if((modereg & 2) && !(data & 2)) {
46 d_fdc->set_drive_type(0, DRIVE_TYPE_2DD);
47 d_fdc->set_drive_type(1, DRIVE_TYPE_2DD);
55 uint32_t FLOPPY::read_io8(uint32_t addr)
57 switch(addr & 0xffff) {
59 return d_fdc->read_io8(0);
61 return d_fdc->read_io8(1);
63 return (d_fdc->is_disk_inserted() ? 0x10 : 0) | 0x64;
65 return (modereg & 0x03) | 0x08;
70 #define STATE_VERSION 1
73 #include "../../statesub.h"
75 void FLOPPY::decl_state()
77 enter_decl_state(STATE_VERSION);
79 DECL_STATE_ENTRY_UINT8(ctrlreg);
80 DECL_STATE_ENTRY_UINT8(modereg);
85 void FLOPPY::save_state(FILEIO* state_fio)
87 if(state_entry != NULL) {
88 state_entry->save_state(state_fio);
90 // state_fio->FputUint32(STATE_VERSION);
91 // state_fio->FputInt32(this_device_id);
93 // state_fio->FputUint8(ctrlreg);
94 // state_fio->FputUint8(modereg);
97 bool FLOPPY::load_state(FILEIO* state_fio)
100 if(state_entry != NULL) {
101 mb = state_entry->load_state(state_fio);
106 // if(state_fio->FgetUint32() != STATE_VERSION) {
109 // if(state_fio->FgetInt32() != this_device_id) {
112 // ctrlreg = state_fio->FgetUint8();
113 // modereg = state_fio->FgetUint8();
117 bool FLOPPY::process_state(FILEIO* state_fio, bool loading)
119 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
122 if(!state_fio->StateCheckInt32(this_device_id)) {
125 state_fio->StateUint8(ctrlreg);
126 state_fio->StateUint8(modereg);