Annotation of previous/src/dimension/nd_mem.c, revision 1.1.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.