OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[csp-qt/common_source_project-fm7.git] / source / src / vm / pc98ha / floppy.cpp
1 /*\r
2         NEC PC-98LT Emulator 'ePC-98LT'\r
3         NEC PC-98HA Emulator 'eHANDY98'\r
4 \r
5         Author : Takeda.Toshiya\r
6         Date   : 2008.06.11 -\r
7 \r
8         [ floppy ]\r
9 */\r
10 \r
11 #include "floppy.h"\r
12 #include "../upd765a.h"\r
13 \r
14 void FLOPPY::reset()\r
15 {\r
16         chgreg = 3;\r
17         ctrlreg = 0x80;\r
18 }\r
19 \r
20 void FLOPPY::write_io8(uint32 addr, uint32 data)\r
21 {\r
22         switch(addr & 0xffff) {\r
23         case 0xca:\r
24                 d_fdc->write_io8(1, data);\r
25                 break;\r
26         case 0xcc:\r
27                 if(!(ctrlreg & 0x80) && (data & 0x80)) {\r
28                         d_fdc->reset();\r
29                 }\r
30                 d_fdc->write_signal(SIG_UPD765A_FREADY, data, 0x40);\r
31                 d_fdc->write_signal(SIG_UPD765A_MOTOR, data, 0x08);\r
32                 ctrlreg = data;\r
33                 break;\r
34         case 0xbe:\r
35                 chgreg = data;\r
36                 break;\r
37         }\r
38 }\r
39 \r
40 uint32 FLOPPY::read_io8(uint32 addr)\r
41 {\r
42         switch(addr & 0xffff) {\r
43         case 0xc8:\r
44                 return d_fdc->read_io8(0);\r
45         case 0xca:\r
46                 return d_fdc->read_io8(1);\r
47         case 0xcc:\r
48                 return (d_fdc->disk_inserted() ? 0x10 : 0) | 0x64;\r
49         case 0xbe:\r
50                 return (chgreg & 0x03) | 0x08;\r
51         }\r
52         return addr & 0xff;\r
53 }\r