📄 agsi.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 + -