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

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

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

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

 };

class  C196Abi : public CTWAbi
{
//196 abi functions
public:                
	virtual STATUS EmuStepRange(U16 uNextAddrNum, ADDR* NextAddr,ADDR* stopAddr);
    virtual STATUS emuInitBank(BANKINIT* bankInit);
    virtual STATUS emuSelectBaud(BYTE);//0X5f
    virtual STATUS emuTestCom(BYTE* pChar,BYTE& bRetLen);
    virtual STATUS emuSetMemMode(BYTE);
    virtual STATUS emuGetMemMode(BYTE&);
    virtual STATUS emuGetUesData(BYTE ,BYTE&,BYTE*);
    virtual STATUS emuProgram(BYTE bType,BYTE bUes);
    virtual STATUS emuSendProgData(WORD wAddr,BYTE bLen,BYTE* pBuff);
    virtual STATUS emuGetTimerCount(float& fTimerCounter);
    virtual STATUS emuSetMemN(ADDR addr, U8 *buff, U16 patternLen,RET_ADDR* retAddr);
    virtual STATUS emuDiagnostic(BYTE* pbOption, DIAGNORESULT* result);

//destruct
	virtual ~C196Abi() {};    
 };                    

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