-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMemory.h
More file actions
72 lines (52 loc) · 1.78 KB
/
Copy pathMemory.h
File metadata and controls
72 lines (52 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//
// Memory.h
// Copyright © 2003 William Sheldon Simms III
//
#ifndef INCLUDED_MEMORY_H
#define INCLUDED_MEMORY_H
#include "AddressPeripheral.h"
#include "MemoryListener.h"
#define MAX_NUM_LISTENERS 8
class Memory: public AddressPeripheral
{
public:
Memory ();
~Memory ();
void SetRunning (bool runf) { running = runf; }
bool IsRom (unsigned short addr);
bool IsReadable (unsigned short addr);
void LoadToRom (unsigned short addr, unsigned char byte);
unsigned char Read (unsigned short addr);
void Write (unsigned short addr, unsigned char byte);
bool AddListener (MemoryListener * new_listener);
unsigned int NumReaders () { return 1; }
unsigned int NumWriters () { return 1; }
ap_reader_t GetReader (unsigned int idx);
ap_writer_t GetWriter (unsigned int idx);
void init_ram_memory_read (unsigned short cpu_address_begin,
unsigned short cpu_address_end,
unsigned short mem_address);
void init_ram_memory_write (unsigned short cpu_address_begin,
unsigned short cpu_address_end,
unsigned short mem_address);
void init_rom_memory (unsigned short cpu_address_begin,
unsigned short cpu_address_end,
unsigned short mem_address);
private:
void init_mem_r (unsigned short cpu_address_begin,
unsigned short cpu_address_end,
unsigned short mem_address,
unsigned char * mem);
void init_mem_w (unsigned short cpu_address_begin,
unsigned short cpu_address_end,
unsigned short mem_address,
unsigned char * mem);
unsigned char * r_ptr [ADDRESS_SPACE_SIZE];
unsigned char * w_ptr [ADDRESS_SPACE_SIZE];
unsigned char ram [ADDRESS_SPACE_SIZE];
unsigned char rom [ADDRESS_SPACE_SIZE];
bool running;
int num_listeners;
MemoryListener * listeners[MAX_NUM_LISTENERS];
};
#endif // INCLUDED_MEMORY_H