00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef PSIDDRV_H
00022 #define PSIDDRV_H
00023
00024 #include <stdint.h>
00025
00026 class SidTuneInfo;
00027 class sidmemory;
00028
00029 class psiddrv
00030 {
00031 private:
00032 const SidTuneInfo *m_tuneInfo;
00033 const char *m_errorString;
00034
00035 uint8_t *reloc_driver;
00036 int reloc_size;
00037
00038 uint_least16_t m_driverAddr;
00039 uint_least16_t m_driverLength;
00040 uint_least16_t m_powerOnDelay;
00041
00042 private:
00043 static uint8_t psid_driver[];
00044
00045 private:
00050 uint8_t iomap(uint_least16_t addr) const;
00051
00052 public:
00053 psiddrv(const SidTuneInfo *tuneInfo) :
00054 m_tuneInfo(tuneInfo),
00055 m_powerOnDelay(0) {}
00056
00062 void powerOnDelay(uint_least16_t delay) { m_powerOnDelay = delay; }
00063
00069 bool drvReloc(sidmemory *mem);
00070
00077 void install(sidmemory *mem) const;
00078
00084 const char* errorString() const { return m_errorString; }
00085
00086 uint_least16_t driverAddr() const { return m_driverAddr; }
00087 uint_least16_t driverLength() const { return m_driverLength; }
00088 };
00089
00090 #endif