ref: 5ea5c3cd1df2baf4463914f3873a322068d15429
dir: /mem.c/
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "fns.h"
#include "dat.h"
#define sysfatal(fmt, ...){printf(fmt"\n", ##__VA_ARGS__); exit(EXIT_FAILURE);}
uint16_t ram[32768], vram[32768];
uint16_t cram[64], vsram[40];
uint32_t cramc[64];
uint8_t zram[8192];
uint8_t reg[32];
uint8_t ctl[15];
uint8_t dma;
uint8_t vdplatch;
uint16_t vdpaddr, vdpdata;
uint8_t yma1, yma2;
uint8_t z80bus = 0;
uint16_t z80bank;
uint8_t
z80read(uint16_t a)
{
printf("z80read %x\n", a);
uint16_t v;
if (a < 0xC000)
return rom[a];
else
return mem[a];
}
void
z80write(uint16_t a, uint8_t v)
{
if (a < 0x8000)
printf("wrong z80write %x %x\n", a, v);
else if (a < 0xE000)
{
rom[a] = v;
rom[a + 0x2000] = v;
}
else
{
printf("z80write > 0xE000 %x %x\n", a, v);
rom[a] = v;
rom[a - 0x2000] = v;
switch (a)
{
case 0xFFFC:
{
printf("Persistent RAM");
break;
}
case 0xFFFD:
{
printf("Switch mapper slot 0 to %d\n", v);
break;
}
case 0xFFFE:
{
printf("Switch mapper slot 1 to %d\n", v);
break;
}
case 0xFFFF:
{
printf("Switch mapper slot 2 to %d\n", v);
break;
}
}
}
}
uint8_t
z80in(uint8_t a)
{
return 0xff;
}
void
z80out(uint8_t a, uint8_t b)
{
}