⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agsi.h

📁 Implementing μVision2 DLLs for Visual borland c++ builder
💻 H
字号:
#ifndef __AGSI_H__
#define __AGSI_H__


#include <windows.h>


#define AGSIEXPORT __declspec( dllexport )
#define AGSIAPI    WINAPIV


#ifdef __cplusplus
extern "C" {
#endif

///////////////////////////////////////////////////////////////////////////////
//
// AGSI: Advanced Generic Simulator Interface (Simulation Interface Part)
//

typedef DWORD AGSIVTR;
typedef DWORD AGSIADDR;
typedef DWORD AGSITIMER;
typedef void (* AGSICALLBACK)(void);

typedef struct {
  HINSTANCE     m_hInstance;
  const char*   m_pszProjectFile;
  const char*   m_pszDevice;
  const char*   m_pszConfiguration;
} AGSICONFIG;

typedef enum {
  AGSIBYTE = 1,
  AGSIWORD = 2,
  AGSILONG = 4,
  AGSIBIT  = 5,
  AGSIVTRCHAR = 10,
  AGSIVTRWORD = 11,
  AGSIVTRLONG = 12,
  AGSIVTRFLOAT = 13
} AGSITYPE;

typedef enum {
  AGSIREAD,
  AGSIWRITE,
  AGSIREADWRITE,
} AGSIACCESS;

// function code numbers for AgsiEntry function
typedef enum {
  AGSI_CHECK     = 0,
  AGSI_INIT      = 1,
  AGSI_TERMINATE = 2,
  AGSI_RESET     = 3,
  AGSI_PREPLL    = 4,
  AGSI_POSTPLL   = 5
} AGSIFUNC;

typedef struct {
   AGSIADDR        vec;
   char          *mess;     // interrupt name
   AGSIADDR       msfr;     // interrupt mode sfr 
   WORD          mmask;     // interrupt mode bit mask
   const char   *mname;     // name of interrupt mode bit
   AGSIADDR       rsfr;     // interrupt request sfr 
   WORD          rmask;     // interrupt request bit mask
   const char   *rname;     // name of interrupt request bit
   AGSIADDR       esfr;     // interrupt enable sfr
   WORD          emask;     // interrupt enable bit mask
   const char   *ename;     // name of interrupt enable bit
   AGSIADDR      p0sfr;     // interrupt priority 0 sfr
   WORD         p0mask;     // interrupt priority 0 bit mask
   const char   *pname;     // name of interrupt priority bit
   AGSIADDR      p1sfr;     // interrupt priority 1 sfr
   WORD         p1mask;     // interrupt priority 1 bit mask
   WORD            pwl;     // priority within level
   WORD     auto_reset;     // reset interrupt request flag on interrupt entry
} AGSIINTERRUPT;

/*
 * Dynamic Menu construction and maintanance
 */

//#pragma pack(1)

#define AGSIDLGD struct AgsiDlgDat
struct AgsiDlgDat {                      // every dialog has it's own structure
  DWORD             iOpen;               // auto reopen dialog (pos := 'rc')
  HWND                 hw;               // Hwnd of Dialog
  BOOL (CALLBACK *wp) (HWND hw, UINT msg, WPARAM wp, LPARAM lp);
  RECT                 rc;               // Position rectangle
  void   (*Update) (void);               // Update dialog content
  void (*Kill) (AGSIDLGD *pM);           // Kill dialog
  void                *vp;               // reserved for C++ Dialogs (Dlg *this)
};

#define AGSIMENU struct AgsiDynaM
struct AgsiDynaM  {                      // Menu item data structure
  int              nDelim;               // Menu template delimiter
  char            *szText;               // Menu item text
  void    (*fp) (AGSIMENU *pM);          // create/bringDlgtoTop function
  DWORD               nID;               // uv3 assigned ID_xxxx
  DWORD            nDlgId;               // Dialog ID
  AGSIDLGD          *pDlg;               // link to dialog attributes
};
//#pragma pack()

/*
 * nDelim:  1 := normal Menu entry
 *          2 := Popup-Entry (nested submenu)
 *         -2 := end of Popup-Group-List
 *         -1 := total end of Menu-List
 *  text:   the name for the menu/popup-menu entry
 *    fp:   Function to be activated on menu-selection
 */


// Functions that must be exported by the loaded DLL
AGSIEXPORT DWORD    AGSIAPI AgsiEntry (DWORD nCode, void *vp);

// Callback functions that are ONLY allowed to call during the initialisation process
AGSIEXPORT BOOL       AGSIAPI AgsiDefineSFR(const char* pszSfrName, AGSIADDR dwAddress, AGSITYPE eType, BYTE bBitPos);
AGSIEXPORT AGSIVTR    AGSIAPI AgsiDefineVTR(const char* pszVtrName, AGSITYPE eType, DWORD dwValue);
AGSIEXPORT BOOL       AGSIAPI AgsiDeclareInterrupt(AGSIINTERRUPT *pInterrupt);
AGSIEXPORT BOOL       AGSIAPI AgsiSetWatchOnSFR(AGSIADDR SFRAddress, AGSICALLBACK pfnReadWrite, AGSIACCESS eAccess);
AGSIEXPORT BOOL       AGSIAPI AgsiSetWatchOnVTR(AGSIVTR hVTR, AGSICALLBACK pfnReadWrite, AGSIACCESS eAccess);
AGSIEXPORT BOOL       AGSIAPI AgsiSetWatchOnMemory(AGSIADDR StartAddress, AGSIADDR EndAddress, AGSICALLBACK pfnReadWrite, AGSIACCESS eAccess);
AGSIEXPORT AGSITIMER  AGSIAPI AgsiCreateTimer(AGSICALLBACK pfnTimer);
AGSIEXPORT BOOL       AGSIAPI AgsiDefineMenuItem(AGSIMENU *pDym);

// Callback functions that are NOT allowed to call during the initialisation process
AGSIEXPORT BOOL     AGSIAPI AgsiWriteSFR(AGSIADDR SFRAddress, DWORD dwValue, DWORD dwMask);
AGSIEXPORT BOOL     AGSIAPI AgsiReadSFR (AGSIADDR SFRAddress, DWORD* pdwCurrentValue, DWORD* pdwPreviousValue, DWORD dwMask);
AGSIEXPORT BOOL     AGSIAPI AgsiWriteVTR(AGSIVTR hVTR, DWORD dwValue);
AGSIEXPORT BOOL     AGSIAPI AgsiReadVTR (AGSIVTR hVTR, DWORD* pdwCurrentValue);
AGSIEXPORT BOOL     AGSIAPI AgsiSetSFRReadValue(DWORD dwValue);
AGSIEXPORT BOOL     AGSIAPI AgsiReadMemory (AGSIADDR Address, DWORD dwCount, BYTE* pbValue);
AGSIEXPORT BOOL     AGSIAPI AgsiWriteMemory(AGSIADDR Address, DWORD dwCount, BYTE* pbValue);
AGSIEXPORT AGSIADDR AGSIAPI AgsiGetLastMemoryAddress(void);
AGSIEXPORT BOOL     AGSIAPI AgsiIsSimulatorAccess(void);
AGSIEXPORT BOOL     AGSIAPI AgsiSetTimer(AGSITIMER hTimer, DWORD dwClock);
AGSIEXPORT UINT64   AGSIAPI AgsiGetClock(void);
AGSIEXPORT double   AGSIAPI AgsiGetLogicalClockFactor(void);
AGSIEXPORT DWORD    AGSIAPI AgsiGetPhysicalClockRate(void);
AGSIEXPORT BOOL     AGSIAPI AgsiSetPhysicalClockRate(DWORD dwCRate);
AGSIEXPORT AGSIADDR AGSIAPI AgsiGetProgramCounter(void);
AGSIEXPORT BOOL     AGSIAPI AgsiIsInInterrupt(void);
AGSIEXPORT BOOL     AGSIAPI AgsiIsSleeping(void);
AGSIEXPORT void     AGSIAPI AgsiWakeUp(WORD nSleepMode);
AGSIEXPORT void     AGSIAPI AgsiStopSimulator(void);
AGSIEXPORT void     AGSIAPI AgsiTriggerReset(void);
AGSIEXPORT void     AGSIAPI AgsiUpdateWindows(void);

#ifdef __cplusplus
}
#endif

///////////////////////////////////////////////////////////////////////////////
//
// AGSI: Advanced Generic Simulator Interface (Dialog Interface Part)
//

#ifdef __cplusplus
extern "C" {
#endif


AGSIEXPORT BOOL     AGSIAPI AgsiProcessDialogMessage (HWND hwndDialog, UINT nMsg, WPARAM wParam, LPARAM lParam);
AGSIEXPORT void     AGSIAPI AgsiMessage(const char* pszFormat, ...);
AGSIEXPORT const char * AGSIAPI DpiGetTargetKey(const char* pszKey);
AGSIEXPORT BOOL     AGSIAPI AgsiSetTargetKey(const char* pszKey, const char *pszString);


#ifdef __cplusplus
}
#endif


#endif // __AGSI_H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -