Example #1
0
        public attoseconds_t m_attoseconds_per_cycle; // attoseconds per adjusted clock cycle


        // construction/destruction

        //-------------------------------------------------
        //  device_execute_interface - constructor
        //-------------------------------------------------
        public device_execute_interface(machine_config mconfig, device_t device)
            : base(device, "execute")
        {
            m_scheduler               = null;
            m_disabled                = false;
            m_vblank_interrupt        = null;
            m_vblank_interrupt_screen = null;
            m_timed_interrupt         = null;
            m_timed_interrupt_period  = attotime.zero;
            m_nextexec                = null;
            m_driver_irq              = null;
            m_timedint_timer          = null;
            m_profiler                = profile_type.PROFILER_IDLE;
            m_icountptr               = null;
            m_cycles_running          = 0;
            m_cycles_stolen           = 0;
            m_suspend               = 0;
            m_nextsuspend           = 0;
            m_eatcycles             = 0;
            m_nexteatcycles         = 0;
            m_trigger               = 0;
            m_inttrigger            = 0;
            m_totalcycles           = 0;
            m_divisor               = 0;
            m_divshift              = 0;
            m_cycles_per_second     = 0;
            m_attoseconds_per_cycle = 0;


            for (int line = 0; line < m_input.Length; line++)
            {
                m_input[line] = new device_input();
            }


            // configure the fast accessor
            assert(device.interfaces().m_execute == null);
            device.interfaces().m_execute = this;
        }
Example #2
0
        }                                                                                                                                                              //device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0), _tag);

        //define MCFG_DEVICE_VBLANK_INT_DEVICE(_tag, _devtag, _class, _func)             device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(&_class::_func, #_class "::" #_func, _devtag, (_class *)0), _tag);
        //define MCFG_DEVICE_VBLANK_INT_REMOVE()              device_execute_interface::static_set_vblank_int(*device, device_interrupt_delegate(), NULL);
        public static void MCFG_DEVICE_PERIODIC_INT_DRIVER(device_t device, device_interrupt_delegate func, int rate)
        {
            device.execute().set_periodic_int(func, attotime.from_hz(rate));
        }                                                                                                                                                                                   //device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0), attotime::from_hz(_rate));
Example #3
0
 public static void MCFG_DEVICE_VBLANK_INT_DRIVER(device_t device, string tag, device_interrupt_delegate func)
 {
     device.execute().set_vblank_int(func, tag);
 }                                                                                                                                                              //device_interrupt_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0), _tag);
Example #4
0
        //void set_vblank_int(device_interrupt_delegate callback, const char *tag)
        //{
        //    m_vblank_interrupt = callback;
        //    m_vblank_interrupt_screen = tag;
        //}
        //template <class FunctionClass> void set_vblank_int(const char *tag, const char *devname, void (FunctionClass::*callback)(device_t &), const char *name)
        //{
        //    set_vblank_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), tag);
        //}
        //template <class FunctionClass> void set_vblank_int(const char *tag, void (FunctionClass::*callback)(device_t &), const char *name)
        //{
        //    set_vblank_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), tag);
        //}


        public void set_periodic_int(device_interrupt_delegate function, attotime rate) //template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate)
        {
            m_timed_interrupt        = function;                                        //m_timed_interrupt = std::forward<Object>(cb);
            m_timed_interrupt_period = rate;
        }
Example #5
0
 public void set_vblank_int(device_interrupt_delegate function, string tag) //template <typename Object> void set_vblank_int(Object &&cb, const char *tag)
 {
     m_vblank_interrupt        = function;                                  //m_vblank_interrupt = std::forward<Object>(cb);
     m_vblank_interrupt_screen = tag;
 }
Example #6
0
        //void remove_vblank_int()
        //{
        //    m_vblank_interrupt = device_interrupt_delegate(*this);
        //    m_vblank_interrupt_screen = nullptr;
        //}


        //template <typename F> void set_periodic_int(F &&cb, const char *name, const attotime &rate)
        //{
        //    m_timed_interrupt.set(std::forward<F>(cb), name);
        //    m_timed_interrupt_period = rate;
        //}
        //template <typename T, typename F> void set_periodic_int(T &&target, F &&cb, const char *name, const attotime &rate)
        //{
        //    m_timed_interrupt.set(std::forward<T>(target), std::forward<F>(cb), name);
        //    m_timed_interrupt_period = rate;
        //}

        public void set_periodic_int(device_interrupt_delegate function, attotime rate)
        {
            m_timed_interrupt        = function; //m_timed_interrupt.set(std::forward<F>(cb), name);
            m_timed_interrupt_period = rate;
        }
Example #7
0
 public void set_vblank_int(string tag, device_interrupt_delegate callback) //template <class FunctionClass> void set_vblank_int(const char *tag, void (FunctionClass::*callback)(device_t &), const char *name)
 {
     set_vblank_int(callback, tag);                                         //set_vblank_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), tag);
 }
Example #8
0
        //template <typename... T> void set_vblank_int(const char *tag, T &&... args)
        //{
        //    m_vblank_interrupt.set(std::forward<T>(args)...);
        //    m_vblank_interrupt_screen = tag;
        //}

        public void set_vblank_int(device_interrupt_delegate function, string tag)
        {
            m_vblank_interrupt        = function; //m_vblank_interrupt = std::forward<Object>(cb);
            m_vblank_interrupt_screen = tag;
        }