/*
Copyright (C) 1998 T. Scott Dattalo
This file is part of gpsim.
gpsim is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
gpsim is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with gpsim; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef __12BIT_INSTRUCTIONS_H__
#define __12BIT_INSTRUCTIONS_H__
#include "pic-instructions.h"
//---------------------------------------------------------
class ADDWF : public Register_op
{
public:
ADDWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new ADDWF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class ANDLW : public Literal_op
{
public:
ANDLW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new ANDLW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class ANDWF : public Register_op
{
public:
ANDWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new ANDWF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class BCF : public Bit_op
{
public:
BCF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new BCF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class BSF : public Bit_op
{
public:
BSF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new BSF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class BTFSC : public Bit_op
{
public:
BTFSC(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new BTFSC(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class BTFSS : public Bit_op
{
public:
BTFSS(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new BTFSS(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class CALL : public instruction
{
public:
unsigned int destination;
CALL(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual char *name(char *str,int len);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new CALL(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class CLRF : public Register_op
{
public:
CLRF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual char *name(char *str,int len);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new CLRF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class CLRW : public instruction
{
public:
CLRW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new CLRW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class CLRWDT : public instruction
{
public:
CLRWDT(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new CLRWDT(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class COMF : public Register_op
{
public:
COMF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new COMF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class DECF : public Register_op
{
public:
DECF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new DECF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class DECFSZ : public Register_op
{
public:
DECFSZ(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new DECFSZ(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class GOTO : public instruction
{
public:
unsigned int destination;
GOTO(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
virtual char *name(char *str,int len);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new GOTO(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class INCF : public Register_op
{
public:
INCF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new INCF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class INCFSZ : public Register_op
{
public:
INCFSZ(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new INCFSZ(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class IORLW : public Literal_op
{
public:
IORLW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new IORLW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class IORWF : public Register_op
{
public:
IORWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new IORWF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class MOVF : public Register_op
{
public:
MOVF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual void debug(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new MOVF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class MOVLW : public Literal_op
{
public:
MOVLW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new MOVLW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class MOVWF : public Register_op
{
public:
MOVWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual char *name(char *str,int len);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new MOVWF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class NOP : public instruction
{
public:
NOP(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new NOP(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class OPTION : public instruction
{
public:
OPTION(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new OPTION(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class RETLW : public Literal_op
{
public:
RETLW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new RETLW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class RLF : public Register_op
{
public:
RLF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new RLF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class RRF : public Register_op
{
public:
RRF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new RRF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class SLEEP : public instruction
{
public:
SLEEP(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual bool isBase() { return true;}
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new SLEEP(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class SUBWF : public Register_op
{
public:
SUBWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new SUBWF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class SWAPF : public Register_op
{
public:
SWAPF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new SWAPF(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class TRIS : public Register_op
{
public:
Register *reg;
TRIS(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
virtual char *name(char *str,int len);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new TRIS(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class XORLW : public Literal_op
{
public:
XORLW(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new XORLW(new_cpu,new_opcode);}
};
//---------------------------------------------------------
class XORWF : public Register_op
{
public:
XORWF(Processor *new_cpu, unsigned int new_opcode);
virtual void execute(void);
static instruction *construct(Processor *new_cpu, unsigned int new_opcode)
{return new XORWF(new_cpu,new_opcode);}
};
#endif /* __12BIT_INSTRUCTIONS_H__ */
syntax highlighted by Code2HTML, v. 0.9.1