OSDN Git Service

[VM][Qt][UI][EMU][WIP] Use EMU_TEMPLATE:: instead of EMU:: . Some VMs are not apply...
[csp-qt/common_source_project-fm7.git] / source / src / vm / ptf20.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2008.02.28 -
6
7         [ EPSON TF-20 (pseudo) ]
8 */
9
10 #ifndef _PTF20_H_
11 #define _PTF20_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 #define SIGNAL_TF20_SIO 0
18
19 class DISK;
20
21 class PTF20 : public DEVICE
22 {
23 private:
24         outputs_t outputs_sio;
25         DISK* disk[8];
26         bool access[8];
27         uint8_t bufr[256], bufs[256];
28         int buflen, phase;
29
30         int __MAX_DRIVE;
31         
32         bool process_cmd();
33         bool disk_protected(int drv);
34         uint8_t* get_sector(int drv, int trk, int sec);
35         
36 public:
37         PTF20(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
38         {
39                 initialize_output_signals(&outputs_sio);
40                 set_device_name(_T("Pseudo TF-20 FDD"));
41         }
42         ~PTF20() {}
43         
44         // common functions
45         void initialize();
46         void release();
47         void reset();
48         void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
49         uint32_t __FASTCALL read_signal(int ch);
50         bool process_state(FILEIO* state_fio, bool loading);
51         
52         // unique functions
53         void set_context_sio(DEVICE* device, int id)
54         {
55                 register_output_signal(&outputs_sio, device, id, 0xff);
56         }
57         void open_disk(int drv, const _TCHAR* file_path, int bank);
58         void close_disk(int drv);
59         bool is_disk_inserted(int drv);
60         void is_disk_protected(int drv, bool value);
61         bool is_disk_protected(int drv);
62 };
63
64 #endif
65