Annotation of uae/memory.h, revision 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.