thiagoauler-apple1/src/memory.c

66 lines
953 B
C

#include "inc/types.h"
#include "inc/ram.h"
#include "inc/rom.h"
#include "inc/memory.h"
/*
+ - - - - +
| 0000 |
| |
| |
| RAM |
| |
| |
| 0FFF |
+ - - - - +
| |
. . .
unused
. . .
| |
+ - - - - +
| FF00 |
| |
| ROM |
| |
| FFFF |
+ - - - - +
*/
void mem_read()
{
if (mem.mar >= 0x0000 && mem.mar <= 0x0FFF)
{
// 4KB memory RAM
ram.mar = mem.mar;
ram_read();
mem.mdr = ram.mdr;
}
else if (mem.mar >= 0xFF00 && mem.mar <= 0xFFFF)
{
// wozmon ROM
rom.mar = mem.mar & 0x00FF;
rom_read();
mem.mdr = rom.mdr;
}
else
{
mem.mdr = 0x00;
}
}
void mem_write()
{
if (mem.mar >= 0x0000 && mem.mar <= 0x0FFF)
{
// 4KB memory RAM
ram.mar = mem.mar;
ram.mdr = mem.mdr;
ram_write();
}
}