/***************************************************************************
**
**    $Header$
**
**    $Log$
** 
****************************************************************************/

/***************************************************************************
**
** File name : abifn251.h
**
** Description: 
**
** Modification:
**
** Programmer: john 1997.1.
**
**    Copyright (C) 1996 Microtek International, Inc.
**    All Rights Reserved
**
****************************************************************************/
#ifndef _ABIFN251_
#define _ABIFN251_

#include "stdafx.h"
#include "abicore.h"

/********************** for class CSimulator251Abi *******************************/
class CSimulator251Abi : public CSimulatorAbi
{ 
//constructor & destructor
	CSimulator251Abi() {
	    pMemSim = new CSimulate251Mem;
	    pCpuSim = new CSimulate251Cpu;
	    ASSERT(pMemSim != NULL);
	    ASSERT(pCpuSim != NULL);
	};
	virtual ~CSimulator251Abi() {
	    if (pMemSim != NULL) delete pMemSim ;
	    if (pCpuSim != NULL) delete pCpuSim ;
	};

 };
class  C251Abi : public CTWAbi
{
//251 abi functions
public:
	//virtual STATUS emuSetAllEvent(BUS_EVENT *event_record, EXEC_EVENT *bp_record,U16 *ext_record);
    virtual	STATUS emuSetTimerReg(U16 settings);
    virtual STATUS emuConfig(BYTE uconfigset[8], BYTE uconfigGet[8]);
    virtual STATUS emuGetConfig(BYTE uconfigset[8]);
    virtual STATUS emuSetPort(U16 portNum);
    virtual	STATUS emuCycle(U8 StepMode,WORD wNextAddrNum, ADDR* NextAddr, U8* frameNum,TRACE_INFO* traceInfo);
    virtual STATUS emuGetHWMode(U8 mode);  
    virtual STATUS emuStepOne(U8 StepMode ,U16 uNextAddrNum, ADDR* NextAddr);
    virtual STATUS emuStepOver(U8 StepMode ,U16 uNextAddrNum, ADDR* NextAddr);
 };                    

#endif//////////////////