// Copyright (c) 2004 - 2021 kio@little-bat.de
// BSD-2-Clause license
// https://opensource.org/licenses/BSD-2-Clause

#pragma once
#include "IsaObject.h"
class Machine;
using Time = double;



class Item : public IsaObject
{
	friend class Machine;

protected:
	Machine* machine;

protected:
	Item (isa_id, Machine*);
	Item (Item&& q) : IsaObject(std::move(q)), machine(q.machine) {}


// ---------------- P U B L I C -------------------

public:
	virtual ~Item() override;

// Item interface:
	virtual void powerOn (/*t=0*/) {}
	virtual void reset	(Time t) {}
	virtual void input	(Time t, uint32 addr, uint32& data) {}
	virtual void output	(Time t, uint32 addr, uint32 data) {}
};





































































