typedef xyw_byte (*xyw_input)(xyw_byte *data, xyw_byte addr, xyw_byte *error);
typedef void (*xyw_output)(xyw_byte *data, xyw_byte addr, xyw_byte *error);
typedef void (*xyw_setup)(xyw_byte *data, xyw_byte *error);
typedef void (*xyw_teardown)(xyw_byte *data);
typedef int (*xyw_poll)(xyw_byte *data);
typedef void (*xyw_save)(xyw_byte *data, xyw_byte *state);
typedef void (*xyw_restore)(xyw_byte *data, const xyw_byte *state);
typedef void (*xyw_tick)(xyw_byte *data);
#define XYW_DEVICE_STATE_SIZE 64
typedef struct xyw_device
{
xyw_byte *data;
xyw_setup setup;
xyw_input input;
xyw_output output;
xyw_teardown teardown;
xyw_poll poll;
xyw_save save;
xyw_restore restore;
xyw_tick tick;
} xyw_device;