diff --git a/include/c64/reu.c b/include/c64/reu.c new file mode 100644 index 0000000..8f7b402 --- /dev/null +++ b/include/c64/reu.c @@ -0,0 +1,2 @@ +#include "reu.h" + diff --git a/include/c64/reu.h b/include/c64/reu.h new file mode 100644 index 0000000..2784f46 --- /dev/null +++ b/include/c64/reu.h @@ -0,0 +1,50 @@ +#ifndef C64_REU_H +#define C64_REU_H + +#include "types.h" + +#define REU_STAT_IRQ 0x80 +#define REU_STAT_EOB 0x40 +#define REU_STAT_FAULT 0x20 +#define REU_STAT_SIZE 0x10 +#define REU_STAT_VERSION 0x0f + +#define REU_CTRL_FIXL 0x80 +#define REU_CTRL_FIXR 0x40 +#define REU_CTRL_INCL 0x00 +#define REU_CTRL_INCR 0x00 + +#define REU_IRQ_ENABLE 0x80 +#define REU_IRQ_EOB 0x40 +#define REU_IRQ_FAULT 0x20 + +#define REU_CMD_EXEC 0x80 +#define REU_CMD_AUTO 0x20 +#define REU_CMD_FF00 0x10 +#define REU_CMD_STORE 0x00 +#define REU_CMD_LOAD 0x01 +#define REU_CMD_SWAP 0x02 +#define REU_CMD_VERIFY 0x03 + +struct REU +{ + volatile byte status; + volatile byte cmd; + + volatile word laddr; + volatile word raddr; + volatile byte rbank; + + volatile word length; + + volatile byte irqmask; + volatile byte ctrl; +}; + + +#define reu (*((struct REU *)0xdf00)) + + +#pragma compile("reu.c") + +#endif