initial commit

This commit is contained in:
2026-07-18 20:34:55 +02:00
commit 59ad004c96
474 changed files with 226635 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
#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 __memmap 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))
// Count the number of 64k pages in the REU, the test is destructive
int reu_count_pages(void);
// Copy an array of data from C64 memory to the REU memory
inline void reu_store(unsigned long raddr, const volatile char * sp, unsigned length);
// Copy an array of data from REU memory to the C64 memory
inline void reu_load(unsigned long raddr, volatile char * dp, unsigned length);
// Fill an array of data in the REU with a single value
inline void reu_fill(unsigned long raddr, char c, unsigned length);
// Copy a 2D array from REU memory to the C64 memory. The stride parameter
// is the distance of two rows in REU memory
inline void reu_load2d(unsigned long raddr, volatile char * dp, char height, unsigned width, unsigned stride);
inline void reu_load2dpage(unsigned long raddr, volatile char * dp, char height, unsigned width, unsigned stride);
#pragma compile("reu.c")
#endif