#ifndef __APPLEVM_H
#define __APPLEVM_H

#include "cpu.h"
#include "appledisplay.h"
#include "diskii.h"
#include "hd32.h"
#include "vmkeyboard.h"
#include "parallelcard.h"
#include "mouse.h"

#include "vm.h"
class AppleVM : public VM {
 public:
  AppleVM();
  virtual ~AppleVM();

  bool Suspend(const char *fn);
  bool Resume(const char *fn);

  void cpuMaintenance(int64_t cycles);

  virtual void Reset();
  void Monitor();

  virtual void triggerPaddleInCycles(uint8_t paddleNum,uint16_t cycleCount);

  const char *DiskName(uint8_t drivenum);
  void ejectDisk(uint8_t drivenum);
  void insertDisk(uint8_t drivenum, const char *filename, bool drawIt = true);

  const char *HDName(uint8_t drivenum);
  void ejectHD(uint8_t drivenum);
  void insertHD(uint8_t drivenum, const char *filename);

  virtual VMKeyboard *getKeyboard();

  bool isMouseEnabled();

  DiskII *disk6;
  HD32 *hd32;
 protected:
  VMKeyboard *keyboard;
  ParallelCard *parallel;
  Mouse *mouse;
};


#endif
