#ifndef VMUSBSTACK_H
#define VMUSBSTACK_H
#define CMD_WRITE 0x000
#define CMD_READ 0x100
#define CMD_A24 0x039
#define CMD_A32 0x009
#define CMD_HM 0x80000
#define CMD_HD 0x20000
#define CMD_MRK 0x2000
#define CMD_DLY 0x8000
#define CMD_BLT 0xFF000000
#define CMD_D16 1
#define CMD_D32 0
#include <vector>
class VmUsbStack {
public:
VmUsbStack();
~VmUsbStack();
std::vector<int> fStack;
void Append(int cmd, int marker);
void Append(int cmd, int addr, int data);
void Marker(int marker);
void WriteA32D16(int addr, int data);
void ReadA32D16(int addr );
void WriteA32D32(int addr, int data);
void ReadA32D32(int addr );
void WriteA24D16(int addr, int data);
void ReadA24D16(int addr );
void WriteA24D32(int addr, int data);
void ReadA24D32(int addr );
void ConditionalRead(int am ,int d16d32,int addr, int data);
void RepeatRead(int addr_modifier,int d16d32, int baseaddr, int n, int increment);
void RepeatWrite(int addr_modifier,int d16d32, int baseaddr, int n, int increment, int data);
int Get(int maxn, int *stack);
void Print();
};
#endif