src/mess/drivers/mz2500.c
| r8978 | r8979 | |
| 441 | 441 | { |
| 442 | 442 | switch(cg_reg[0x0e]) |
| 443 | 443 | { |
| 444 | | case 0x03: /* CG 4 color mode */ break; |
| 444 | case 0x00: |
| 445 | break; |
| 445 | 446 | case 0x14: |
| 446 | 447 | draw_cg16_screen(machine,bitmap,cliprect,0,320,pri); |
| 447 | 448 | draw_cg16_screen(machine,bitmap,cliprect,1,320,pri); |
| r8978 | r8979 | |
| 456 | 457 | case 0x1d: |
| 457 | 458 | draw_cg256_screen(machine,bitmap,cliprect,pri); |
| 458 | 459 | break; |
| 460 | default: |
| 461 | popmessage("Unsupported CG mode %02x, contact MESS dev",cg_reg[0x0e]); |
| 462 | break; |
| 459 | 463 | } |
| 460 | 464 | } |
| 461 | 465 | |
| r8978 | r8979 | |
| 1233 | 1237 | rp5c15_w(device,rtc_index,data,0xff); |
| 1234 | 1238 | } |
| 1235 | 1239 | |
| 1240 | static UINT32 emm_offset; |
| 1241 | |
| 1242 | static 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 | |
| 1257 | static 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 | |
| 1266 | static 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 | |
| 1236 | 1279 | static ADDRESS_MAP_START(mz2500_io, ADDRESS_SPACE_IO, 8) |
| 1237 | 1280 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 1238 | 1281 | // AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w) |
| 1239 | 1282 | // AM_RANGE(0x63, 0x63) AM_READ(w3100a_r) |
| 1240 | | AM_RANGE(0x60, 0x63) AM_NOP |
| 1241 | 1283 | // AM_RANGE(0xa0, 0xa3) AM_READWRITE(sio_r,sio_w) |
| 1242 | | AM_RANGE(0xa0, 0xa3) AM_NOP |
| 1243 | 1284 | // AM_RANGE(0xa4, 0xa5) AM_READWRITE(sasi_r, sasi_w) |
| 1244 | | AM_RANGE(0xa4, 0xa5) AM_NOP |
| 1245 | 1285 | AM_RANGE(0xa8, 0xa8) AM_WRITE(mz2500_rom_w) |
| 1246 | 1286 | 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) |
| 1249 | 1289 | AM_RANGE(0xae, 0xae) AM_WRITE(palette4096_io_w) |
| 1250 | 1290 | // AM_RANGE(0xb0, 0xb3) AM_READWRITE(sio_r,sio_w) |
| 1251 | 1291 | AM_RANGE(0xb4, 0xb4) AM_READWRITE(mz2500_bank_addr_r,mz2500_bank_addr_w) |
| r8978 | r8979 | |
| 1803 | 1843 | |
| 1804 | 1844 | ROM_REGION( 0x2000, "pcg", ROMREGION_ERASEFF ) |
| 1805 | 1845 | |
| 1846 | ROM_REGION( 0x100000, "emm", ROMREGION_ERASEFF ) |
| 1847 | |
| 1806 | 1848 | ROM_REGION( 0x08000, "ipl", 0 ) |
| 1807 | 1849 | ROM_LOAD( "ipl.rom", 0x00000, 0x8000, CRC(7a659f20) SHA1(ccb3cfdf461feea9db8d8d3a8815f7e345d274f7) ) |
| 1808 | 1850 | |