|
|
1.1 root 1: /*
2: * UAE - The Unusable Amiga Emulator
3: *
4: * memory management v0.1
5: *
6: * (c) 1995 Bernd Schmidt
7: */
8:
9: const int chipmem_size = 512;
10: const int fastmem_size = 0;
11: const int bogomem_size = 0; // C00000 crap mem
12:
13: class address64k {
14: public:
15: virtual UWORD wget(UWORD addr) = 0;
16: virtual void wput(UWORD addr, UWORD value) = 0;
17: virtual UBYTE bget(UWORD addr) = 0;
18: virtual void bput(UWORD addr, UBYTE value) = 0;
19: };
20:
21: class ram64k: public address64k {
22: protected:
23: UWORD ram[32768];
24: public:
25: virtual UWORD wget(UWORD addr);
26: virtual void wput(UWORD addr, UWORD value);
27: virtual UBYTE bget(UWORD addr);
28: virtual void bput(UWORD addr, UBYTE value);
29: };
30:
31: class custom64k: public address64k {
32: struct cchipaddr {
33: UWORD (*get)();
34: void (*put)(UWORD);
35: };
36: static cchipaddr *cchiptable;
37: struct custom_func {
38: UWORD addr;
39: cchipaddr fptrs;
40: };
41: static custom_func functable[];
42:
43: public:
44: custom64k();
45: virtual UWORD wget(UWORD addr);
46: virtual void wput(UWORD addr, UWORD value);
47: virtual UBYTE bget(UWORD addr);
48: virtual void bput(UWORD addr, UBYTE value);
49: };
50:
51: class cia64k: public address64k {
52: public:
53: virtual UWORD wget(UWORD addr);
54: virtual void wput(UWORD addr, UWORD value);
55: virtual UBYTE bget(UWORD addr);
56: virtual void bput(UWORD addr, UBYTE value);
57: };
58:
59: class amigamemory {
60: private:
61: address64k *banks[256]; // memory size is restricted to 16M
62: public:
63: amigamemory();
64: ~amigamemory();
65:
66: UWORD get_word(CPTR addr) { return banks[addr>>16]->wget(addr & 0xffff); }
67: UBYTE get_byte(CPTR addr) { return banks[addr>>16]->bget(addr & 0xffff); }
68: void put_word(CPTR a,UWORD w) { banks[a>>16]->wput(a & 0xffff, w); }
69: void put_byte(CPTR a,UBYTE b) { banks[a>>16]->bput(a & 0xffff, b); }
70: };
71:
72: extern amigamemory mem;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.