OSDN Git Service

[General][CMAKE] Integrate all devices to upstream 2015-12-17.
[csp-qt/common_source_project-fm7.git] / source / src / vm / pc6001 / psub.h
1 /*
2         NEC PC-6001 Emulator 'yaPC-6001'
3         NEC PC-6001mkII Emulator 'yaPC-6201'
4         NEC PC-6001mkIISR Emulator 'yaPC-6401'
5         NEC PC-6601 Emulator 'yaPC-6601'
6         NEC PC-6601SR Emulator 'yaPC-6801'
7
8         Author : tanam
9         Date   : 2013.07.15-
10
11         [ pseudo sub cpu ]
12 */
13
14 #ifndef _PSUB_H_
15 #define _PSUB_H_
16
17 #include "../vm.h"
18 #include "../../emu.h"
19 #include "../device.h"
20
21 class FILEIO;
22
23 class PSUB : public DEVICE
24 {
25 private:
26         DEVICE *d_pio, *d_timer;
27         
28         // data recorder
29         FILEIO* fio;
30         bool play, rec, is_wav, is_p6t;
31         _TCHAR rec_file_path[_MAX_PATH];
32         int CasIntFlag;
33         int CasIndex;
34         int CasRecv;
35         int CasMode;
36         int CasBaud, FileBaud;
37         uint8 CasData[0x10000];
38         int CasLength;
39         int CasSkipFlag;
40         
41         uint8* key_stat;
42         int kbFlagFunc;
43         int kbFlagGraph;
44         int kbFlagCtrl;
45         int kanaMode;
46         int katakana;
47         int p6key;
48         int stick0;
49         int StrigIntFlag;
50         int StrigEventID;
51         void update_keyboard();
52         
53 public:
54         PSUB(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
55         ~PSUB() {}
56         
57         // common functions
58         void initialize();
59         void release();
60         void reset();
61         void write_io8(uint32 addr, uint32 data);
62         uint32 read_io8(uint32 addr);
63         void event_frame();
64         void event_callback(int event_id, int err);
65         uint32 intr_ack();
66         void save_state(FILEIO* state_fio);
67         bool load_state(FILEIO* state_fio);
68         
69         // unique functions
70         void set_context_pio(DEVICE* device)
71         {
72                 d_pio = device;
73         }
74         void set_context_timer(DEVICE* device)
75         {
76                 d_timer = device;
77         }
78         bool play_tape(const _TCHAR* file_path);
79         bool rec_tape(const _TCHAR* file_path);
80         void close_tape();
81         bool tape_inserted()
82         {
83                 return (play || rec);
84         }
85 };
86 #endif