66 lines
953 B
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();
|
|
}
|
|
}
|