OSDN Git Service

[VM][STATE] Apply new state framework to some devices a lot (excepts some devices...
[csp-qt/common_source_project-fm7.git] / source / src / vm / prnfile.h
index 61e514a..54c90be 100644 (file)
@@ -10,8 +10,8 @@
 #ifndef _PRNFILE_H_
 #define _PRNFILE_H_
 
-#include "vm.h"
-#include "../emu.h"
+//#include "vm.h"
+//#include "../emu.h"
 #include "device.h"
 
 class FILEIO;
@@ -19,16 +19,29 @@ class FILEIO;
 class PRNFILE : public DEVICE
 {
 private:
+       outputs_t outputs_busy;
+       outputs_t outputs_ack;
+       
        _TCHAR file_path[_MAX_PATH];
        FILEIO *fio;
-       int value, wait_frames;
-       bool strobe;
-       
+       int value, busy_id, ack_id, wait_frames;
+       bool strobe, res, busy, ack;
+
+       bool _PRINTER_STROBE_RISING_EDGE;
+
+       void set_busy(bool value);
+       void set_ack(bool value);
        void open_file();
        void close_file();
        
 public:
-       PRNFILE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
+       PRNFILE(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+       {
+               initialize_output_signals(&outputs_busy);
+               initialize_output_signals(&outputs_ack);
+               _PRINTER_STROBE_RISING_EDGE = false;
+               set_device_name(_T("DUMMY PRINTER DEVICE"));
+       }
        ~PRNFILE() {}
        
        // common functions
@@ -36,8 +49,22 @@ public:
        void release();
        void reset();
        void event_frame();
-       void write_signal(int id, uint32 data, uint32 mask);
-       uint32 read_signal(int ch);
+       void write_signal(int id, uint32_t data, uint32_t mask);
+       uint32_t read_signal(int ch);
+       void event_callback(int event_id, int err);
+       void decl_state();
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
+       
+       // unique functions
+       void set_context_busy(DEVICE* device, int id, uint32_t mask)
+       {
+               register_output_signal(&outputs_busy, device, id, mask);
+       }
+       void set_context_ack(DEVICE* device, int id, uint32_t mask)
+       {
+               register_output_signal(&outputs_ack, device, id, mask);
+       }
 };
 
 #endif