OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[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 namespace PC6001 {
24
25 class PSUB : public DEVICE
26 {
27 private:
28         DEVICE *d_pio, *d_timer;
29         
30         // data recorder
31         FILEIO* fio;
32         bool play, rec, is_wav, is_p6t;
33         _TCHAR rec_file_path[_MAX_PATH];
34         int CasIntFlag;
35         int CasIndex;
36         int CasRecv;
37         int CasMode;
38         int CasBaud, FileBaud;
39         uint8_t CasData[0x10000];
40         int CasLength;
41         int CasSkipFlag;
42         
43 //      const uint8_t* key_stat;
44         uint8_t key_stat[256];
45         int kbFlagFunc;
46         int kbFlagGraph;
47         int kbFlagCtrl;
48         int kanaMode;
49         int katakana;
50         int p6key;
51         int stick0;
52         int StrigIntFlag;
53         int StrigEventID;
54         void update_keyboard();
55         
56 public:
57         PSUB(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
58         {
59                 set_device_name(_T("Pseudo Sub System"));
60         }
61         ~PSUB() {}
62         
63         // common functions
64         void initialize();
65         void release();
66         void reset();
67         void write_io8(uint32_t addr, uint32_t data);
68         uint32_t read_io8(uint32_t addr);
69         void event_frame();
70         void event_callback(int event_id, int err);
71         uint32_t get_intr_ack();
72         bool process_state(FILEIO* state_fio, bool loading);
73         
74         // unique functions
75         void set_context_pio(DEVICE* device)
76         {
77                 d_pio = device;
78         }
79         void set_context_timer(DEVICE* device)
80         {
81                 d_timer = device;
82         }
83         bool play_tape(const _TCHAR* file_path);
84         bool rec_tape(const _TCHAR* file_path);
85         void close_tape();
86         bool is_tape_inserted()
87         {
88                 return (play || rec);
89         }
90         void key_down(int code);
91         void key_up(int code);
92 };
93
94 }
95 #endif