Annotation of uae/memory.h, revision 1.1.1.1

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;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.