OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz2800 / floppy.cpp
1 /*
2         SHARP MZ-2800 Emulator 'EmuZ-2800'
3
4         Author : Takeda.Toshiya
5         Date   : 2007.08.13 -
6
7         [ floppy ]
8 */
9
10 #include "floppy.h"
11 #include "../mb8877.h"
12 #include "../disk.h"
13
14 namespace MZ2800 {
15
16 void FLOPPY::reset()
17 {
18         for(int i = 0; i < 4; i++) {
19                 d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
20         }
21 }
22
23 void FLOPPY::write_io8(uint32_t addr, uint32_t data)
24 {
25         switch(addr & 0x7fff) {
26         case 0xdc:
27                 // drive reg
28                 d_fdc->write_signal(SIG_MB8877_DRIVEREG, data, 3);
29                 d_fdc->write_signal(SIG_MB8877_MOTOR, data, 0x80);
30                 break;
31         case 0xdd:
32                 // side reg
33                 d_fdc->write_signal(SIG_MB8877_SIDEREG, data, 1);
34                 break;
35         case 0xde:
36                 break;
37         case 0xdf:
38                 for(int i = 0; i < 4; i++) {
39                         if(data & 1) {
40                                 d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
41                         } else {
42                                 if(d_fdc->get_media_type(i) == MEDIA_TYPE_2DD) {
43                                         d_fdc->set_drive_type(i, DRIVE_TYPE_2DD);
44                                 } else {
45                                         d_fdc->set_drive_type(i, DRIVE_TYPE_2D);
46                                 }
47                         }
48                 }
49                 break;
50         }
51 }
52
53 }