OSDN Git Service

e9636d9afd6891a446bef36bf5674861249dceef
[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 void FLOPPY::reset()
15 {
16         for(int i = 0; i < 4; i++) {
17                 d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
18         }
19 }
20
21 void FLOPPY::write_io8(uint32_t addr, uint32_t data)
22 {
23         switch(addr & 0x7fff) {
24         case 0xdc:
25                 // drive reg
26                 d_fdc->write_signal(SIG_MB8877_DRIVEREG, data, 3);
27                 d_fdc->write_signal(SIG_MB8877_MOTOR, data, 0x80);
28                 break;
29         case 0xdd:
30                 // side reg
31                 d_fdc->write_signal(SIG_MB8877_SIDEREG, data, 1);
32                 break;
33         case 0xde:
34                 break;
35         case 0xdf:
36                 for(int i = 0; i < 4; i++) {
37                         if(data & 1) {
38                                 d_fdc->set_drive_type(i, DRIVE_TYPE_2HD);
39                         } else {
40                                 if(d_fdc->get_media_type(i) == MEDIA_TYPE_2DD) {
41                                         d_fdc->set_drive_type(i, DRIVE_TYPE_2DD);
42                                 } else {
43                                         d_fdc->set_drive_type(i, DRIVE_TYPE_2D);
44                                 }
45                         }
46                 }
47                 break;
48         }
49 }
50