Bug fix: check if vm exists
[avr-sim.git] / Hardware.h
bloba56caa3c1577f3d94a4adcbdcfe182b0f1f24d3c
1 #ifndef AVR_HARDWARE_H
2 #define AVR_HARDWARE_H
4 namespace avr {
6 class Bus;
7 class IORegister;
9 class Hardware {
10 public:
11 Hardware(Bus & bus) : bus(bus), holdCycles(0) {}
12 virtual ~Hardware() {}
14 public:
15 virtual bool attachReg(const char *name, IORegister *reg) = 0;
16 virtual void regChanged( IORegister *reg ) = 0;
17 virtual void step() {}
18 virtual void reset() {}
20 public:
21 bool isHoldingCPU();
23 protected:
24 void setHoldCycles(unsigned int cycles);
26 protected:
27 Bus & bus;
28 unsigned int holdCycles;
31 inline void Hardware::setHoldCycles(unsigned int cycles) {
32 holdCycles = cycles;
35 inline bool Hardware::isHoldingCPU() {
36 if( holdCycles != 0 )
37 holdCycles--;
39 return (holdCycles != 0);
44 #endif /*AVR_HARDWARE_H*/