Files
Work/as68hc11/Mode.hpp
2024-08-07 09:12:07 -04:00

108 lines
2.3 KiB
C++

#ifndef _AS68HC11_ADDRESSMODE_HPP_
#define _AS68HC11_ADDRESSMODE_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
class AddressMode
{
public:
enum Attribute{None=0x0000,Inherent=0x001,Immediate=0x0002,Direct=0x0004,Extended=0x0008,Indexed=0x0010,Relative=0x0020,Mask=0x0040,IndexedRelativeMask=Indexed|Relative|Mask,DirectRelativeMask=Direct|Relative|Mask,IndexedMask=Indexed|Mask,DirectMask=Direct|Mask};
AddressMode(void);
AddressMode(const AddressMode &someAddressMode);
AddressMode(Attribute attribute,BYTE opcode,BYTE prebyte=0x00);
virtual ~AddressMode();
AddressMode &operator=(const AddressMode &someAddressMode);
BOOL operator==(const AddressMode &someAddressMode)const;
operator String(void);
Attribute attribute(void)const;
void attribute(Attribute attribute);
BYTE opcode(void)const;
void opcode(BYTE opcode);
BYTE prebyte(void)const;
void prebyte(BYTE prebyte);
private:
Attribute mAttribute;
BYTE mOpCode;
BYTE mPreByte;
};
inline
AddressMode::AddressMode(void)
: mAttribute(None), mOpCode(0x00), mPreByte(0x00)
{
}
inline
AddressMode::AddressMode(const AddressMode &someAddressMode)
{
*this=someAddressMode;
}
inline
AddressMode::AddressMode(Attribute attribute,BYTE opcode,BYTE prebyte)
: mAttribute(attribute), mOpCode(opcode), mPreByte(prebyte)
{
}
inline
AddressMode::~AddressMode()
{
}
inline
AddressMode &AddressMode::operator=(const AddressMode &someAddressMode)
{
attribute(someAddressMode.attribute());
opcode(someAddressMode.opcode());
prebyte(someAddressMode.prebyte());
return *this;
}
inline
BOOL AddressMode::operator==(const AddressMode &someAddressMode)const
{
return (attribute()==someAddressMode.attribute()&&
opcode()==someAddressMode.opcode()&&
prebyte()==someAddressMode.prebyte());
}
inline
AddressMode::Attribute AddressMode::attribute(void)const
{
return mAttribute;
}
inline
void AddressMode::attribute(Attribute attribute)
{
mAttribute=attribute;
}
inline
BYTE AddressMode::opcode(void)const
{
return mOpCode;
}
inline
void AddressMode::opcode(BYTE opcode)
{
mOpCode=opcode;
}
inline
BYTE AddressMode::prebyte(void)const
{
return mPreByte;
}
inline
void AddressMode::prebyte(BYTE prebyte)
{
mPreByte=prebyte;
}
#endif