#!/usr/bin/env python
# I, Danny Milosavljevic, hereby place this file into the public domain.
import memory
import rom

"""
--------------------------------------- $4000
 Empty
--------------------------------------- $3F20
 Sprite Palette
--------------------------------------- $3F10
 Image Palette
--------------------------------------- $3F00
 Empty
--------------------------------------- $3000
 Attribute Table 3
--------------------------------------- $2FC0
 Name Table 3 (32x30 tiles)
--------------------------------------- $2C00
 Attribute Table 2
--------------------------------------- $2BC0
 Name Table 2 (32x30 tiles)
--------------------------------------- $2800
 Attribute Table 1
--------------------------------------- $27C0
 Name Table 1 (32x30 tiles)
--------------------------------------- $2400
 Attribute Table 0
--------------------------------------- $23C0
 Name Table 0 (32x30 tiles)
--------------------------------------- $2000
 Pattern Table 1 (256x2x8, may be VROM)
--------------------------------------- $1000
 Pattern Table 0 (256x2x8, may be VROM)
--------------------------------------- $0000
"""
class MMU(memory.Memory):   
    def __init__(self):
        self.memory = 65536*[0]
        pass
    def read_memory(self, address, size = 1):
        assert(size >= 1)
        return(memory.one_big_value(self.memory[address : address + size]))
    def write_memory(self, address, value, size):
        assert size == 1
        self.memory[address] = value
    def map_ROM(self, name, address, value, B_active): 
        """ very simpleminded. TODO make read-only etc. """
        if B_active:
            for i, v in enumerate(value):
                self.memory[address + i] = ord(v)
