Annotation of previous/src/dimension/nd_mem.c, revision 1.1

1.1     ! root        1: #include "main.h"
        !             2: #include "configuration.h"
        !             3: #include "m68000.h"
        !             4: #include "sysdeps.h"
        !             5: #include "dimension.h"
        !             6: #include "nd_mem.h"
        !             7: #include "nd_devs.h"
        !             8: #include "nd_rom.h"
        !             9: 
        !            10: #if ENABLE_DIMENSION
        !            11: 
        !            12: #define write_log printf
        !            13: 
        !            14: /* --------- NEXTDIMENSION MEMORY ---------- */
        !            15: 
        !            16: /* NeXTdimension board memory */
        !            17: #define ND_RAM_START   0xF8000000
        !            18: #define ND_RAM_SIZE            0x04000000
        !            19: #define ND_RAM_MASK            0x03FFFFFF
        !            20: 
        !            21: #define ND_VRAM_START  0xFE000000
        !            22: #define ND_VRAM_SIZE   0x00400000
        !            23: #define ND_VRAM_MASK   0x003FFFFF
        !            24: 
        !            25: #define ND_EEPROM_START        0xFFFE0000
        !            26: #define ND_EEPROM_SIZE 0x00020000
        !            27: #define ND_EEPROM_MASK 0x0001FFFF
        !            28: 
        !            29: /* RAM banks */
        !            30: #define ND_RAM_BANKSIZE 0x01000000
        !            31: #define ND_RAM_BANKMASK 0x03000000
        !            32: uae_u32 ND_RAM_bankmask0;
        !            33: uae_u32 ND_RAM_bankmask1;
        !            34: uae_u32 ND_RAM_bankmask2;
        !            35: uae_u32 ND_RAM_bankmask3;
        !            36: 
        !            37: Uint8  ND_ram[64*1024*1024];
        !            38: Uint32 ND_vram_off;
        !            39: Uint8  ND_vram[4*1024*1024];
        !            40: Uint8  ND_rom[128*1024];
        !            41: 
        !            42: Uint8 ND_dmem[512];
        !            43: 
        !            44: /* NeXTdimension dither memory */
        !            45: #define ND_DMEM_START   0xFF000000
        !            46: #define ND_DMEM_SIZE    0x00000200
        !            47: #define ND_DMEM_MASK    0x000001FF
        !            48: 
        !            49: /* NeXTdimension board devices */
        !            50: #define ND_IO_START            0xFF800000
        !            51: #define ND_IO_SIZE             0x00004000
        !            52: #define ND_IO_MASK             0x00003FFF
        !            53: 
        !            54: /* NeXTdimension board RAMDAC */
        !            55: #define ND_RAMDAC_START        0xFF200000
        !            56: #define ND_RAMDAC_SIZE  0x00001000
        !            57: #define ND_RAMDAC_MASK  0x00000FFF
        !            58: 
        !            59: /* NeXTdimension board data path */
        !            60: #define ND_DP_START    0xF0000000
        !            61: #define ND_DP_SIZE  0x00001000
        !            62: #define ND_DP_MASK  0x00000FFF
        !            63: 
        !            64: /* NeXTdimension EEPROM access */
        !            65: #define ND_EEPROM2_STRT 0xFFF00000
        !            66: #define ND_EEPROM2_SIZE 0x00080000
        !            67: #define ND_EEPROM2_MASK 0x0007FFFC
        !            68: 
        !            69: /* Memory banks */
        !            70: 
        !            71: nd_addrbank *nd_mem_banks[65536];
        !            72: 
        !            73: void nd_map_banks (nd_addrbank *bank, int start, int size)
        !            74: {
        !            75:        int bnr;
        !            76:        
        !            77:        for (bnr = start; bnr < start + size; bnr++)
        !            78:                nd_put_mem_bank (bnr << 16, bank);
        !            79:        return;
        !            80: }
        !            81: 
        !            82: /* NeXTdimension RAM */
        !            83: static uae_u32 nd_ram_bank0_lget(uaecptr addr)
        !            84: {
        !            85:        addr &= ND_RAM_bankmask0;
        !            86:        return do_get_mem_long(ND_ram + addr);
        !            87: }
        !            88: 
        !            89: static uae_u32 nd_ram_bank0_wget(uaecptr addr)
        !            90: {
        !            91:        addr &= ND_RAM_bankmask0;
        !            92:        return do_get_mem_word(ND_ram + addr);
        !            93: }
        !            94: 
        !            95: static uae_u32 nd_ram_bank0_bget(uaecptr addr)
        !            96: {
        !            97:        addr &= ND_RAM_bankmask0;
        !            98:        return ND_ram[addr];
        !            99: }
        !           100: 
        !           101: static void nd_ram_bank0_lput(uaecptr addr, uae_u32 l)
        !           102: {
        !           103:        addr &= ND_RAM_bankmask0;
        !           104:        do_put_mem_long(ND_ram + addr, l);
        !           105: }
        !           106: 
        !           107: static void nd_ram_bank0_wput(uaecptr addr, uae_u32 w)
        !           108: {
        !           109:        addr &= ND_RAM_bankmask0;
        !           110:        do_put_mem_word(ND_ram + addr, w);
        !           111: }
        !           112: 
        !           113: static void nd_ram_bank0_bput(uaecptr addr, uae_u32 b)
        !           114: {
        !           115:        addr &= ND_RAM_bankmask0;
        !           116:        ND_ram[addr] = b;
        !           117: }
        !           118: 
        !           119: static uae_u32 nd_ram_bank1_lget(uaecptr addr)
        !           120: {
        !           121:     addr &= ND_RAM_bankmask1;
        !           122:     return do_get_mem_long(ND_ram + addr);
        !           123: }
        !           124: 
        !           125: static uae_u32 nd_ram_bank1_wget(uaecptr addr)
        !           126: {
        !           127:     addr &= ND_RAM_bankmask1;
        !           128:     return do_get_mem_word(ND_ram + addr);
        !           129: }
        !           130: 
        !           131: static uae_u32 nd_ram_bank1_bget(uaecptr addr)
        !           132: {
        !           133:     addr &= ND_RAM_bankmask1;
        !           134:     return ND_ram[addr];
        !           135: }
        !           136: 
        !           137: static void nd_ram_bank1_lput(uaecptr addr, uae_u32 l)
        !           138: {
        !           139:     addr &= ND_RAM_bankmask1;
        !           140:     do_put_mem_long(ND_ram + addr, l);
        !           141: }
        !           142: 
        !           143: static void nd_ram_bank1_wput(uaecptr addr, uae_u32 w)
        !           144: {
        !           145:     addr &= ND_RAM_bankmask1;
        !           146:     do_put_mem_word(ND_ram + addr, w);
        !           147: }
        !           148: 
        !           149: static void nd_ram_bank1_bput(uaecptr addr, uae_u32 b)
        !           150: {
        !           151:     addr &= ND_RAM_bankmask1;
        !           152:     ND_ram[addr] = b;
        !           153: }
        !           154: 
        !           155: static uae_u32 nd_ram_bank2_lget(uaecptr addr)
        !           156: {
        !           157:     addr &= ND_RAM_bankmask2;
        !           158:     return do_get_mem_long(ND_ram + addr);
        !           159: }
        !           160: 
        !           161: static uae_u32 nd_ram_bank2_wget(uaecptr addr)
        !           162: {
        !           163:     addr &= ND_RAM_bankmask2;
        !           164:     return do_get_mem_word(ND_ram + addr);
        !           165: }
        !           166: 
        !           167: static uae_u32 nd_ram_bank2_bget(uaecptr addr)
        !           168: {
        !           169:     addr &= ND_RAM_bankmask2;
        !           170:     return ND_ram[addr];
        !           171: }
        !           172: 
        !           173: static void nd_ram_bank2_lput(uaecptr addr, uae_u32 l)
        !           174: {
        !           175:     addr &= ND_RAM_bankmask2;
        !           176:     do_put_mem_long(ND_ram + addr, l);
        !           177: }
        !           178: 
        !           179: static void nd_ram_bank2_wput(uaecptr addr, uae_u32 w)
        !           180: {
        !           181:     addr &= ND_RAM_bankmask2;
        !           182:     do_put_mem_word(ND_ram + addr, w);
        !           183: }
        !           184: 
        !           185: static void nd_ram_bank2_bput(uaecptr addr, uae_u32 b)
        !           186: {
        !           187:     addr &= ND_RAM_bankmask2;
        !           188:     ND_ram[addr] = b;
        !           189: }
        !           190: 
        !           191: static uae_u32 nd_ram_bank3_lget(uaecptr addr)
        !           192: {
        !           193:     addr &= ND_RAM_bankmask3;
        !           194:     return do_get_mem_long(ND_ram + addr);
        !           195: }
        !           196: 
        !           197: static uae_u32 nd_ram_bank3_wget(uaecptr addr)
        !           198: {
        !           199:     addr &= ND_RAM_bankmask3;
        !           200:     return do_get_mem_word(ND_ram + addr);
        !           201: }
        !           202: 
        !           203: static uae_u32 nd_ram_bank3_bget(uaecptr addr)
        !           204: {
        !           205:     addr &= ND_RAM_bankmask3;
        !           206:     return ND_ram[addr];
        !           207: }
        !           208: 
        !           209: static void nd_ram_bank3_lput(uaecptr addr, uae_u32 l)
        !           210: {
        !           211:     addr &= ND_RAM_bankmask3;
        !           212:     do_put_mem_long(ND_ram + addr, l);
        !           213: }
        !           214: 
        !           215: static void nd_ram_bank3_wput(uaecptr addr, uae_u32 w)
        !           216: {
        !           217:     addr &= ND_RAM_bankmask3;
        !           218:     do_put_mem_word(ND_ram + addr, w);
        !           219: }
        !           220: 
        !           221: static void nd_ram_bank3_bput(uaecptr addr, uae_u32 b)
        !           222: {
        !           223:     addr &= ND_RAM_bankmask3;
        !           224:     ND_ram[addr] = b;
        !           225: }
        !           226: 
        !           227: static uae_u32 nd_ram_empty_lget(uaecptr addr)
        !           228: {
        !           229:     write_log("[ND] empty memory bank lget at %08X\n",addr);
        !           230:     return 0;
        !           231: }
        !           232: 
        !           233: static uae_u32 nd_ram_empty_wget(uaecptr addr)
        !           234: {
        !           235:     write_log("[ND] empty memory bank wget at %08X\n",addr);
        !           236:     return 0;
        !           237: }
        !           238: 
        !           239: static uae_u32 nd_ram_empty_bget(uaecptr addr)
        !           240: {
        !           241:     write_log("[ND] empty memory bank bget at %08X\n",addr);
        !           242:     return 0;
        !           243: }
        !           244: 
        !           245: static void nd_ram_empty_lput(uaecptr addr, uae_u32 l)
        !           246: {
        !           247:     write_log("[ND] empty memory bank lput at %08X\n",addr);
        !           248: }
        !           249: 
        !           250: static void nd_ram_empty_wput(uaecptr addr, uae_u32 w)
        !           251: {
        !           252:     write_log("[ND] empty memory bank wput at %08X\n",addr);
        !           253: }
        !           254: 
        !           255: static void nd_ram_empty_bput(uaecptr addr, uae_u32 b)
        !           256: {
        !           257:     write_log("[ND] empty memory bank bput at %08X\n",addr);
        !           258: }
        !           259: 
        !           260: /* NeXTdimension VRAM */
        !           261: static uae_u32 nd_vram_lget(uaecptr addr)
        !           262: {
        !           263:     addr &= ND_VRAM_MASK;
        !           264:     return do_get_mem_long(ND_vram + addr);
        !           265: }
        !           266: 
        !           267: static uae_u32 nd_vram_wget(uaecptr addr)
        !           268: {
        !           269:     addr &= ND_VRAM_MASK;
        !           270:     return do_get_mem_word(ND_vram + addr);
        !           271: }
        !           272: 
        !           273: static uae_u32 nd_vram_bget(uaecptr addr)
        !           274: {
        !           275:     addr &= ND_VRAM_MASK;
        !           276:     return ND_vram[addr];
        !           277: }
        !           278: 
        !           279: static void nd_vram_lput(uaecptr addr, uae_u32 l)
        !           280: {
        !           281:     addr &= ND_VRAM_MASK;
        !           282:     do_put_mem_long(ND_vram + addr, l);
        !           283: }
        !           284: 
        !           285: static void nd_vram_wput(uaecptr addr, uae_u32 w)
        !           286: {
        !           287:     addr &= ND_VRAM_MASK;
        !           288:     do_put_mem_word(ND_vram + addr, w);
        !           289: }
        !           290: 
        !           291: static void nd_vram_bput(uaecptr addr, uae_u32 b)
        !           292: {
        !           293:     addr &= ND_VRAM_MASK;
        !           294:     ND_vram[addr] = b;
        !           295: }
        !           296: 
        !           297: /* NeXTdimension ROM */
        !           298: static uae_u32 nd_rom_lget(uaecptr addr)
        !           299: {
        !           300:        addr &= ND_EEPROM_MASK;
        !           301:     addr |= 3; /* byte lane at msb */
        !           302:        return (ND_rom[addr] << 24);
        !           303: }
        !           304: 
        !           305: static uae_u32 nd_rom_wget(uaecptr addr)
        !           306: {
        !           307:        addr &= ND_EEPROM_MASK;
        !           308:     addr |= 3; /* byte lane at msb */
        !           309:        return (ND_rom[addr] << 8);
        !           310: }
        !           311: 
        !           312: static uae_u32 nd_rom_bget(uaecptr addr)
        !           313: {
        !           314:        addr &= ND_EEPROM_MASK;
        !           315:     addr |= 3; /* byte lane at msb */
        !           316:        return ND_rom[addr];
        !           317: }
        !           318: 
        !           319: static uae_u32 nd_rom_cs8get(uaecptr addr)
        !           320: {
        !           321:     addr &= ND_EEPROM_MASK;
        !           322:     return ND_rom[addr];
        !           323: }
        !           324: 
        !           325: /* Illegal access functions */
        !           326: 
        !           327: static uae_u32 nd_illegal_lget(uaecptr addr)
        !           328: {
        !           329:     write_log("[ND] Illegal lget at %08X\n",addr);
        !           330:     return 0;
        !           331: }
        !           332: 
        !           333: static uae_u32 nd_illegal_wget(uaecptr addr)
        !           334: {
        !           335:     write_log("[ND] Illegal wget at %08X\n",addr);
        !           336:     return 0;
        !           337: }
        !           338: 
        !           339: static uae_u32 nd_illegal_bget(uaecptr addr)
        !           340: {
        !           341:     write_log("[ND] Illegal bget at %08X\n",addr);
        !           342:     return 0;
        !           343: }
        !           344: 
        !           345: static void nd_illegal_lput(uaecptr addr, uae_u32 l)
        !           346: {
        !           347:     write_log("[ND] Illegal lput at %08X\n",addr);
        !           348: }
        !           349: 
        !           350: static void nd_illegal_wput(uaecptr addr, uae_u32 w)
        !           351: {
        !           352:     write_log("[ND] Illegal wput at %08X\n",addr);
        !           353: }
        !           354: 
        !           355: static void nd_illegal_bput(uaecptr addr, uae_u32 b)
        !           356: {
        !           357:     write_log("[ND] Illegal bput at %08X\n",addr);
        !           358: }
        !           359: 
        !           360: 
        !           361: 
        !           362: /* NeXTdimension ROM access */
        !           363: static uae_u32 nd_rom_access_bget(uaecptr addr)
        !           364: {
        !           365:     addr &= ND_EEPROM2_MASK;
        !           366:     addr |= (addr>>17)&3;
        !           367:     addr &= ~(3<<17);
        !           368:     return nd_rom_read(addr);
        !           369: }
        !           370: 
        !           371: static void nd_rom_access_bput(uaecptr addr, uae_u32 b)
        !           372: {
        !           373:     addr &= ND_EEPROM2_MASK;
        !           374:     addr |= (addr>>17)&3;
        !           375:     addr &= ~(3<<17);
        !           376:     nd_rom_write(addr, b);
        !           377: }
        !           378: 
        !           379: /* NeXTdimension dither memory & datapath */
        !           380: 
        !           381: static uae_u32 nd_dmem_lget(uaecptr addr)
        !           382: {
        !           383:     addr &= ND_DP_MASK;
        !           384:     return addr < ND_DMEM_SIZE ? do_get_mem_long(ND_dmem + addr) : nd_dp_lget(addr);
        !           385: }
        !           386: 
        !           387: static uae_u32 nd_dmem_wget(uaecptr addr)
        !           388: {
        !           389:     addr &= ND_DP_MASK;
        !           390:     return addr < ND_DMEM_SIZE ? do_get_mem_word(ND_dmem + addr) : nd_dp_lget(addr);
        !           391: }
        !           392: 
        !           393: static uae_u32 nd_dmem_bget(uaecptr addr)
        !           394: {
        !           395:     addr &= ND_DP_MASK;
        !           396:     return addr < ND_DMEM_SIZE ? do_get_mem_byte(ND_dmem + addr) : nd_dp_lget(addr);
        !           397: }
        !           398: 
        !           399: static void nd_dmem_lput(uaecptr addr, uae_u32 l)
        !           400: {
        !           401:     addr &= ND_DP_MASK;
        !           402:     if(addr < ND_DMEM_SIZE)
        !           403:         do_put_mem_long(ND_dmem + addr, l);
        !           404:     else
        !           405:         nd_dp_lput(addr, l);
        !           406: }
        !           407: 
        !           408: static void nd_dmem_wput(uaecptr addr, uae_u32 w)
        !           409: {
        !           410:     addr &= ND_DP_MASK;
        !           411:     if(addr < ND_DMEM_SIZE)
        !           412:         do_put_mem_word(ND_dmem + addr, w);
        !           413:     else
        !           414:         nd_dp_lput(addr, w);
        !           415: }
        !           416: 
        !           417: static void nd_dmem_bput(uaecptr addr, uae_u32 b)
        !           418: {
        !           419:     addr &= ND_DP_MASK;
        !           420:     if(addr < ND_DMEM_SIZE)
        !           421:         do_put_mem_byte(ND_dmem + addr, b);
        !           422:     else
        !           423:         nd_dp_lput(addr, b);
        !           424: }
        !           425: 
        !           426: static nd_addrbank nd_ram_bank0 =
        !           427: {
        !           428:        nd_ram_bank0_lget, nd_ram_bank0_wget, nd_ram_bank0_bget,
        !           429:        nd_ram_bank0_lput, nd_ram_bank0_wput, nd_ram_bank0_bput,
        !           430:        nd_ram_bank0_bget
        !           431: };
        !           432: 
        !           433: static nd_addrbank nd_ram_bank1 =
        !           434: {
        !           435:     nd_ram_bank1_lget, nd_ram_bank1_wget, nd_ram_bank1_bget,
        !           436:     nd_ram_bank1_lput, nd_ram_bank1_wput, nd_ram_bank1_bput,
        !           437:     nd_ram_bank1_bget
        !           438: };
        !           439: 
        !           440: static nd_addrbank nd_ram_bank2 =
        !           441: {
        !           442:     nd_ram_bank2_lget, nd_ram_bank2_wget, nd_ram_bank2_bget,
        !           443:     nd_ram_bank2_lput, nd_ram_bank2_wput, nd_ram_bank2_bput,
        !           444:     nd_ram_bank2_bget
        !           445: };
        !           446: 
        !           447: static nd_addrbank nd_ram_bank3 =
        !           448: {
        !           449:     nd_ram_bank3_lget, nd_ram_bank3_wget, nd_ram_bank3_bget,
        !           450:     nd_ram_bank3_lput, nd_ram_bank3_wput, nd_ram_bank3_bput,
        !           451:     nd_ram_bank3_bget
        !           452: };
        !           453: 
        !           454: static nd_addrbank nd_ram_empty =
        !           455: {
        !           456:     nd_ram_empty_lget, nd_ram_empty_wget, nd_ram_empty_bget,
        !           457:     nd_ram_empty_lput, nd_ram_empty_wput, nd_ram_empty_bput,
        !           458:     nd_ram_empty_bget
        !           459: };
        !           460: 
        !           461: static nd_addrbank nd_vram_bank =
        !           462: {
        !           463:     nd_vram_lget, nd_vram_wget, nd_vram_bget,
        !           464:     nd_vram_lput, nd_vram_wput, nd_vram_bput,
        !           465:     nd_vram_bget
        !           466: };
        !           467: 
        !           468: static nd_addrbank nd_rom_bank =
        !           469: {
        !           470:        nd_rom_lget, nd_rom_wget, nd_rom_bget,
        !           471:     nd_illegal_lput, nd_illegal_wput, nd_illegal_bput,
        !           472:     nd_rom_cs8get
        !           473: 
        !           474: };
        !           475: 
        !           476: static nd_addrbank nd_rom_access_bank =
        !           477: {
        !           478:     nd_illegal_lget, nd_illegal_wget, nd_rom_access_bget,
        !           479:     nd_illegal_lput, nd_illegal_wput, nd_rom_access_bput,
        !           480:     nd_illegal_bget
        !           481: };
        !           482: 
        !           483: static nd_addrbank nd_dmem_bank =
        !           484: {
        !           485:     nd_dmem_lget, nd_dmem_wget, nd_dmem_bget,
        !           486:     nd_dmem_lput, nd_dmem_wput, nd_dmem_bput,
        !           487:     nd_dmem_bget
        !           488: };
        !           489: 
        !           490: static nd_addrbank nd_io_bank =
        !           491: {
        !           492:        nd_io_lget, nd_io_wget, nd_io_bget,
        !           493:        nd_io_lput, nd_io_wput, nd_io_bput,
        !           494:        nd_io_bget
        !           495: };
        !           496: 
        !           497: static nd_addrbank nd_ramdac_bank =
        !           498: {
        !           499:     nd_ramdac_bget, nd_ramdac_bget, nd_ramdac_bget,
        !           500:     nd_ramdac_bput, nd_ramdac_bput, nd_ramdac_bput,
        !           501:     nd_ramdac_bget
        !           502: };
        !           503: 
        !           504: static nd_addrbank nd_illegal_bank =
        !           505: {
        !           506:     nd_illegal_lget, nd_illegal_wget, nd_illegal_bget,
        !           507:     nd_illegal_lput, nd_illegal_wput, nd_illegal_bput,
        !           508:     nd_illegal_bget
        !           509: };
        !           510: 
        !           511: static void nd_init_mem_banks (void)
        !           512: {
        !           513:     int i;
        !           514:     for (i = 0; i < 65536; i++)
        !           515:         nd_put_mem_bank (i<<16, &nd_illegal_bank);
        !           516: }
        !           517: 
        !           518: void nd_memory_init(void) {
        !           519:        
        !           520:        write_log("[ND] Memory init: Memory size: %iMB\n",
        !           521:               Configuration_CheckDimensionMemory(ConfigureParams.Dimension.nMemoryBankSize));
        !           522: 
        !           523:     /* Initialize banks with error memory */
        !           524:     nd_init_mem_banks();
        !           525:     
        !           526:     /* Map main memory */
        !           527:     if (ConfigureParams.Dimension.nMemoryBankSize[0]) {
        !           528:         ND_RAM_bankmask0 = ND_RAM_BANKMASK|((ConfigureParams.Dimension.nMemoryBankSize[0]<<20)-1);
        !           529:         nd_map_banks(&nd_ram_bank0, (ND_RAM_START+(0*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           530:         write_log("[ND] Mapping main memory bank0 at $%08x: %iMB\n",
        !           531:                   (ND_RAM_START+(0*ND_RAM_BANKSIZE)), ConfigureParams.Dimension.nMemoryBankSize[0]);
        !           532:     } else {
        !           533:         ND_RAM_bankmask0 = 0;
        !           534:         nd_map_banks(&nd_ram_empty, (ND_RAM_START+(0*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           535:         write_log("[ND] Mapping main memory bank0 at $%08x: empty\n", (ND_RAM_START+(0*ND_RAM_BANKSIZE)));
        !           536:     }
        !           537:     if (ConfigureParams.Dimension.nMemoryBankSize[1]) {
        !           538:         ND_RAM_bankmask1 = ND_RAM_BANKMASK|((ConfigureParams.Dimension.nMemoryBankSize[1]<<20)-1);
        !           539:         nd_map_banks(&nd_ram_bank1, (ND_RAM_START+(1*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           540:         write_log("[ND] Mapping main memory bank1 at $%08x: %iMB\n",
        !           541:                   (ND_RAM_START+(1*ND_RAM_BANKSIZE)), ConfigureParams.Dimension.nMemoryBankSize[1]);
        !           542:     } else {
        !           543:         ND_RAM_bankmask1 = 0;
        !           544:         nd_map_banks(&nd_ram_empty, (ND_RAM_START+(1*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           545:         write_log("[ND] Mapping main memory bank1 at $%08x: empty\n", (ND_RAM_START+(1*ND_RAM_BANKSIZE)));
        !           546:     }
        !           547:     if (ConfigureParams.Dimension.nMemoryBankSize[2]) {
        !           548:         ND_RAM_bankmask2 = ND_RAM_BANKMASK|((ConfigureParams.Dimension.nMemoryBankSize[2]<<20)-1);
        !           549:         nd_map_banks(&nd_ram_bank2, (ND_RAM_START+(2*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           550:         write_log("[ND] Mapping main memory bank2 at $%08x: %iMB\n",
        !           551:                   (ND_RAM_START+(2*ND_RAM_BANKSIZE)), ConfigureParams.Dimension.nMemoryBankSize[2]);
        !           552:     } else {
        !           553:         ND_RAM_bankmask2 = 0;
        !           554:         nd_map_banks(&nd_ram_empty, (ND_RAM_START+(2*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           555:         write_log("[ND] Mapping main memory bank2 at $%08x: empty\n", (ND_RAM_START+(2*ND_RAM_BANKSIZE)));
        !           556:     }
        !           557:     if (ConfigureParams.Dimension.nMemoryBankSize[3]) {
        !           558:         ND_RAM_bankmask3 = ND_RAM_BANKMASK|((ConfigureParams.Dimension.nMemoryBankSize[3]<<20)-1);
        !           559:         nd_map_banks(&nd_ram_bank3, (ND_RAM_START+(3*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           560:         write_log("[ND] Mapping main memory bank3 at $%08x: %iMB\n",
        !           561:                   (ND_RAM_START+(3*ND_RAM_BANKSIZE)), ConfigureParams.Dimension.nMemoryBankSize[3]);
        !           562:     } else {
        !           563:         ND_RAM_bankmask3 = 0;
        !           564:         nd_map_banks(&nd_ram_empty, (ND_RAM_START+(3*ND_RAM_BANKSIZE))>>16, ND_RAM_BANKSIZE >> 16);
        !           565:         write_log("[ND] Mapping main memory bank3 at $%08x: empty\n", (ND_RAM_START+(3*ND_RAM_BANKSIZE)));
        !           566:     }
        !           567:     
        !           568:     write_log("[ND] Mapping video memory at $%08x: %iMB\n", ND_VRAM_START, ND_VRAM_SIZE/(1024*1024));
        !           569:     nd_map_banks(&nd_vram_bank, ND_VRAM_START>>16, (4*ND_VRAM_SIZE)>>16);
        !           570:     ND_vram_off = 0;
        !           571:     
        !           572:        write_log("[ND] Mapping ROM at $%08x: %ikB\n", ND_EEPROM_START, ND_EEPROM_SIZE/1024);
        !           573:        nd_map_banks(&nd_rom_bank, ND_EEPROM_START>>16, ND_EEPROM_SIZE>>16);
        !           574:     nd_map_banks(&nd_rom_access_bank, ND_EEPROM2_STRT>>16, ND_EEPROM2_SIZE>>16);
        !           575:     nd_rom_load();
        !           576:        
        !           577:     write_log("[ND] Mapping dither memory and data path at $%08x: %ibyte\n", ND_DMEM_START, ND_DMEM_SIZE);
        !           578:     nd_map_banks(&nd_dmem_bank, ND_DMEM_START>>16, 1);
        !           579: 
        !           580:        write_log("[ND] Mapping IO memory at $%08x\n", ND_IO_START);
        !           581:        nd_map_banks(&nd_io_bank, ND_IO_START>>16, 1);
        !           582:     
        !           583:     write_log("[ND] Mapping RAMDAC registers at $%08x\n", ND_RAMDAC_START);
        !           584:     nd_map_banks(&nd_ramdac_bank, ND_RAMDAC_START>>16, 1);
        !           585: }
        !           586: 
        !           587: #endif

unix.superglobalmegacorp.com

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