OSDN Git Service

[VM][WIP] Apply some devices merging upstream 2018-10-05.This still not build.WIP.
[csp-qt/common_source_project-fm7.git] / source / src / vm / prnfile.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2015.12.18-
6
7         [ dummy printer ]
8 */
9
10 #ifndef _PRNFILE_H_
11 #define _PRNFILE_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 class FILEIO;
18
19 class PRNFILE : public DEVICE
20 {
21 private:
22         outputs_t outputs_busy;
23         outputs_t outputs_ack;
24         
25         _TCHAR file_path[_MAX_PATH];
26         FILEIO *fio;
27         int value, busy_id, ack_id, wait_frames;
28         bool strobe, res, busy, ack;
29
30         bool _PRINTER_STROBE_RISING_EDGE;
31
32         void set_busy(bool value);
33         void set_ack(bool value);
34         void open_file();
35         void close_file();
36         
37 public:
38         PRNFILE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
39         {
40                 initialize_output_signals(&outputs_busy);
41                 initialize_output_signals(&outputs_ack);
42                 _PRINTER_STROBE_RISING_EDGE = false;
43                 set_device_name(_T("DUMMY PRINTER DEVICE"));
44         }
45         ~PRNFILE() {}
46         
47         // common functions
48         void initialize();
49         void release();
50         void reset();
51         void event_frame();
52         void write_signal(int id, uint32_t data, uint32_t mask);
53         uint32_t read_signal(int ch);
54         void event_callback(int event_id, int err);
55         bool process_state(FILEIO* state_fio, bool loading);
56         
57         // unique functions
58         void set_context_busy(DEVICE* device, int id, uint32_t mask)
59         {
60                 register_output_signal(&outputs_busy, device, id, mask);
61         }
62         void set_context_ack(DEVICE* device, int id, uint32_t mask)
63         {
64                 register_output_signal(&outputs_ack, device, id, mask);
65         }
66 };
67
68 #endif
69