46 #define PMAGJA_FIRSTOFFSET 0x40030 68 uint64_t idata = 0, odata = 0;
82 fatal(
"[ pmagja: write to addr 0x%08llx: 0x%08llx ]\n",
83 (
long long)relative_addr, (
long long)idata);
87 switch (relative_addr) {
91 debug(
"[ pmagja: read from pip offset: 0x%08llx ]\n",
95 debug(
"[ px: write to pip offset: 0x%08llx ]\n",
100 if (relative_addr >= 0x200000) {
102 for (i=0; i<len; i++) {
103 int ofs = relative_addr - 0x200000 + i;
105 unsigned char newdata[3];
118 y * XSIZE) * 3, newdata, 3,
126 }
else if (relative_addr >= 0x100000 &&
127 relative_addr < 0x200000) {
133 fatal(
"[ pmagja: write to addr 0x%08llx: 0x%08llx ]\n",
134 (
long long)relative_addr, (
long long)idata);
139 ofs = (relative_addr - 0x100000) * 2;
146 for (ix=0; ix<len*2; ix++) {
147 unsigned char data[3];
150 data[0] = data[1] = data[2] = 0;
151 ctype = (idata >> (ix*4)) & 0xf;
170 fatal(
"[ pmagja: read from addr 0x%x: " 171 "0x%llx ]\n", (
int)relative_addr,
174 fatal(
"[ pmagja: write to addr 0x%x: " 175 "0x%llx ]\n", (
int)relative_addr,
197 uint64_t baseaddr,
const char *irq_path)
208 fprintf(stderr,
"dev_pmagja_init(): out of memory (1)\n");
214 fprintf(stderr,
"dev_pmagja_init(): out of memory (2)\n");
uint64_t memory_readmax64(struct cpu *cpu, unsigned char *buf, int len)
void fatal(const char *fmt,...)
struct vfb_data * dev_fb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int vfb_type, int visible_xsize, int visible_ysize, int xsize, int ysize, int bit_depth, const char *name)
void dev_pmagja_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, const char *irq_path)
#define DEV_PMAGJA_LENGTH
int dev_pmagja_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *)
void dev_bt431_init(struct memory *mem, uint64_t baseaddr, struct vfb_data *vfb_data, int planes)
#define CHECK_ALLOCATION(ptr)
struct memory * memory_new(uint64_t physical_max, int arch)
#define PMAGJA_FIRSTOFFSET
void dev_bt459_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, uint64_t baseaddr_irq, struct vfb_data *vfb_data, int planes, const char *irq_path, int type)
struct vfb_data * vfb_data
#define INTERRUPT_CONNECT(name, istruct)
void memory_writemax64(struct cpu *cpu, unsigned char *buf, int len, uint64_t data)
int dev_fb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *)
void memory_device_register(struct memory *mem, const char *, uint64_t baseaddr, uint64_t len, int(*f)(struct cpu *, struct memory *, uint64_t, unsigned char *, size_t, int, void *), void *extra, int flags, unsigned char *dyntrans_data)
unsigned char pixeldata[XSIZE *YSIZE]
unsigned char rgb_palette[256 *3]