Previous 15994 Revisions Next

r8979 Tuesday 31st August, 2010 at 15:50:48 UTC by Angelo Salese
[MZ-2500]: Implemented EMM, Dust Box seems to use it
[src/mess/drivers]mz2500.c

src/mess/drivers/mz2500.c
r8978r8979
441441{
442442   switch(cg_reg[0x0e])
443443   {
444      case 0x03: /* CG 4 color mode */ break;
444      case 0x00:
445         break;
445446      case 0x14:
446447         draw_cg16_screen(machine,bitmap,cliprect,0,320,pri);
447448         draw_cg16_screen(machine,bitmap,cliprect,1,320,pri);
r8978r8979
456457      case 0x1d:
457458         draw_cg256_screen(machine,bitmap,cliprect,pri);
458459         break;
460      default:
461         popmessage("Unsupported CG mode %02x, contact MESS dev",cg_reg[0x0e]);
462         break;
459463   }
460464}
461465
r8978r8979
12331237   rp5c15_w(device,rtc_index,data,0xff);
12341238}
12351239
1240static UINT32 emm_offset;
1241
1242static READ8_HANDLER( mz2500_emm_data_r )
1243{
1244   UINT8 *emm_ram = memory_region(space->machine, "emm");
1245   UINT8 emm_lo_index;
1246
1247   emm_lo_index = (cpu_get_reg(space->machine->device("maincpu"), Z80_B));
1248
1249   emm_offset = (emm_offset & 0xffff00) | (emm_lo_index & 0xff);
1250
1251   if(emm_offset < 0x100000) //emm max size
1252      return emm_ram[emm_offset];
1253
1254   return 0xff;
1255}
1256
1257static WRITE8_HANDLER( mz2500_emm_addr_w )
1258{
1259   UINT8 emm_hi_index;
1260
1261   emm_hi_index = (cpu_get_reg(space->machine->device("maincpu"), Z80_B));
1262
1263   emm_offset = ((emm_hi_index & 0xff) << 16) | ((data & 0xff) << 8) | (emm_offset & 0xff);
1264}
1265
1266static WRITE8_HANDLER( mz2500_emm_data_w )
1267{
1268   UINT8 *emm_ram = memory_region(space->machine, "emm");
1269   UINT8 emm_lo_index;
1270
1271   emm_lo_index = (cpu_get_reg(space->machine->device("maincpu"), Z80_B));
1272
1273   emm_offset = (emm_offset & 0xffff00) | (emm_lo_index & 0xff);
1274
1275   if(emm_offset < 0x100000) //emm max size
1276      emm_ram[emm_offset] = data;
1277}
1278
12361279static ADDRESS_MAP_START(mz2500_io, ADDRESS_SPACE_IO, 8)
12371280   ADDRESS_MAP_GLOBAL_MASK(0xff)
12381281//  AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w)
12391282//  AM_RANGE(0x63, 0x63) AM_READ(w3100a_r)
1240   AM_RANGE(0x60, 0x63) AM_NOP
12411283//  AM_RANGE(0xa0, 0xa3) AM_READWRITE(sio_r,sio_w)
1242   AM_RANGE(0xa0, 0xa3) AM_NOP
12431284//  AM_RANGE(0xa4, 0xa5) AM_READWRITE(sasi_r, sasi_w)
1244   AM_RANGE(0xa4, 0xa5) AM_NOP
12451285   AM_RANGE(0xa8, 0xa8) AM_WRITE(mz2500_rom_w)
12461286   AM_RANGE(0xa9, 0xa9) AM_READ(mz2500_rom_r)
1247//  AM_RANGE(0xac, 0xad) AM_WRITE(emm_w)
1248//  AM_RANGE(0xad, 0xad) AM_READ(emm_r)
1287   AM_RANGE(0xac, 0xac) AM_WRITE(mz2500_emm_addr_w)
1288   AM_RANGE(0xad, 0xad) AM_READ(mz2500_emm_data_r) AM_WRITE(mz2500_emm_data_w)
12491289   AM_RANGE(0xae, 0xae) AM_WRITE(palette4096_io_w)
12501290//  AM_RANGE(0xb0, 0xb3) AM_READWRITE(sio_r,sio_w)
12511291   AM_RANGE(0xb4, 0xb4) AM_READWRITE(mz2500_bank_addr_r,mz2500_bank_addr_w)
r8978r8979
18031843
18041844   ROM_REGION( 0x2000, "pcg", ROMREGION_ERASEFF )
18051845
1846   ROM_REGION( 0x100000, "emm", ROMREGION_ERASEFF )
1847
18061848   ROM_REGION( 0x08000, "ipl", 0 )
18071849   ROM_LOAD( "ipl.rom", 0x00000, 0x8000, CRC(7a659f20) SHA1(ccb3cfdf461feea9db8d8d3a8815f7e345d274f7) )
18081850

Previous 15994 Revisions Next


© 1998-2018 The MESS Team