56 lines
984 B
C
56 lines
984 B
C
#ifndef C64_RASTERIRQ_H
|
|
#define C64_RASTERIRQ_H
|
|
|
|
#include "types.h"
|
|
|
|
#define NUM_IRQS 16
|
|
|
|
|
|
enum RIRQCodeIndex
|
|
{
|
|
RIRQ_DATA_0 = 1,
|
|
RIRQ_DATA_1 = 3,
|
|
|
|
RIRQ_ADDR_0 = 10,
|
|
RIRQ_ADDR_1 = 13,
|
|
|
|
RIRQ_DATA_2 = 16,
|
|
RIRQ_ADDR_2 = 18,
|
|
|
|
RIRQ_DATA_3 = 21,
|
|
RIRQ_ADDR_3 = 23,
|
|
|
|
RIRQ_DATA_4 = 26,
|
|
RIRQ_ADDR_4 = 28,
|
|
|
|
RIRQ_SIZE = 31
|
|
};
|
|
|
|
typedef struct RIRQCode
|
|
{
|
|
byte size;
|
|
byte code[RIRQ_SIZE];
|
|
} RIRQCode;
|
|
|
|
void rirq_build(RIRQCode * ic, byte size);
|
|
|
|
inline void rirq_write(RIRQCode * ic, byte n, void * addr, byte data);
|
|
inline void rirq_addr(RIRQCode * ic, byte n, void * addr);
|
|
inline void rirq_data(RIRQCode * ic, byte n, byte data);
|
|
inline void rirq_delay(RIRQCode * ic, byte cycles);
|
|
|
|
inline void rirq_set(byte n, byte row, RIRQCode * write);
|
|
inline void rirq_clear(byte n)
|
|
inline void rirq_move(byte n, byte row);
|
|
|
|
|
|
void rirq_init(bool kernalIRQ);
|
|
void rirq_start(void);
|
|
void rirq_stop(void);
|
|
void rirq_sort(void);
|
|
void rirq_wait(void);
|
|
|
|
#pragma compile("rasterirq.c")
|
|
|
|
#endif
|