86 lines
1.4 KiB
C
86 lines
1.4 KiB
C
//*****************************************************************************
|
|
// Sentinel 65X Kernel
|
|
//
|
|
// src/drivers/vera.c
|
|
//*****************************************************************************
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "config.h"
|
|
#include "drivers/vera.h"
|
|
|
|
typedef struct vera_s *VERA;
|
|
|
|
struct vera_s {
|
|
uint8_t addr_x_l;
|
|
uint8_t addr_x_m;
|
|
uint8_t addr_x_h;
|
|
union {
|
|
uint8_t data[2];
|
|
uint16_t data16;
|
|
};
|
|
uint8_t ctrl;
|
|
uint8_t ien;
|
|
uint8_t isr;
|
|
union {
|
|
uint8_t irq_line_l;
|
|
uint8_t const scanline_l;
|
|
};
|
|
};
|
|
|
|
VERA vera = (VERA)(0x00df00);
|
|
|
|
void
|
|
vera_init(void)
|
|
{
|
|
|
|
}
|
|
|
|
uint8_t
|
|
vera_peek(uint32_t addr)
|
|
{
|
|
(void) addr;
|
|
|
|
// Set addrsel to 0
|
|
uint8_t asel = vera->ctrl;
|
|
vera->ctrl = asel & 0b11111110;
|
|
|
|
// Set address
|
|
vera->addr_x_l = addr & 0x000000FF;
|
|
vera->addr_x_m = (addr & 0x0000FF00) >> 8;
|
|
|
|
vera->addr_x_h = vera->addr_x_h & 0b11111110;
|
|
|
|
vera->addr_x_h = vera->addr_x_h | (addr & ((uint32_t)(1) << 16));
|
|
|
|
return vera->data[0];
|
|
}
|
|
|
|
void
|
|
vera_poke(uint32_t addr, uint8_t value)
|
|
{
|
|
(void) addr;
|
|
|
|
// Set addrsel to 0
|
|
uint8_t asel = vera->ctrl;
|
|
vera->ctrl = asel & 0b11111110;
|
|
|
|
// Set address
|
|
vera->addr_x_l = addr & 0x000000FF;
|
|
vera->addr_x_m = (addr & 0x0000FF00) >> 8;
|
|
|
|
vera->addr_x_h = vera->addr_x_h & 0b11111110;
|
|
|
|
vera->addr_x_h = vera->addr_x_h | (addr & ((uint32_t)(1) << 16));
|
|
|
|
vera->data[0] = value;
|
|
return;
|
|
}
|
|
|
|
void
|
|
_vera_set_bgcolor(uint8_t color)
|
|
{
|
|
(void) color;
|
|
return;
|
|
}
|