trunk/src/mess/drivers/pet.c
r22874 | r22875 | |
387 | 387 | |
388 | 388 | if (!endra) |
389 | 389 | { |
| 390 | //logerror("%s read %04x : cswff %u cs9 %u csa %u csio %u cse %u cskb %u fa12 %u casena1 %u endra %u noscreen %u casena2 %u fa15 %u\n",machine().describe_context(),offset,cswff,cs9,csa,csio,cse,cskb,fa12,casena1,endra,noscreen,casena2,fa15); |
| 391 | |
| 392 | offs_t drma = fa15 << 15 | (offset & 0x7e00) | BIT(offset, 0) << 8 | (offset & 0x1fe) >> 1; |
| 393 | |
390 | 394 | if (!casena1) |
391 | 395 | { |
392 | | data = m_ram->pointer()[offset & 0xffff]; |
| 396 | data = m_ram->pointer()[drma]; |
393 | 397 | } |
394 | 398 | if (casena2) |
395 | 399 | { |
396 | | data = m_ram->pointer()[0x10000 | fa15 << 15 | (offset & 0x7fff)]; |
| 400 | data = m_ram->pointer()[0x10000 | drma]; |
397 | 401 | } |
398 | 402 | } |
399 | 403 | if (!cs9) |
r22874 | r22875 | |
457 | 461 | |
458 | 462 | if (!endra) |
459 | 463 | { |
| 464 | //logerror("%s write %04x : cswff %u cs9 %u csa %u csio %u cse %u cskb %u fa12 %u casena1 %u endra %u noscreen %u casena2 %u fa15 %u\n",machine().describe_context(),offset,cswff,cs9,csa,csio,cse,cskb,fa12,casena1,endra,noscreen,casena2,fa15); |
| 465 | |
| 466 | offs_t drma = fa15 << 15 | (offset & 0x7e00) | BIT(offset, 0) << 8 | (offset & 0x1fe) >> 1; |
| 467 | |
460 | 468 | if (!casena1) |
461 | 469 | { |
462 | | m_ram->pointer()[offset & 0xffff] = data; |
| 470 | m_ram->pointer()[drma] = data; |
463 | 471 | } |
464 | 472 | if (casena2) |
465 | 473 | { |
466 | | m_ram->pointer()[0x10000 | fa15 << 15 | (offset & 0x7fff)] = data; |
| 474 | m_ram->pointer()[0x10000 | drma] = data; |
467 | 475 | } |
468 | 476 | } |
469 | 477 | if (!csio) |
r22874 | r22875 | |
480 | 488 | { |
481 | 489 | m_via->write(space, offset & 0x0f, data); |
482 | 490 | } |
483 | | if (m_crtc && BIT(offset, 7)) |
| 491 | if (BIT(offset, 7)) |
484 | 492 | { |
485 | 493 | if (BIT(offset, 0)) |
486 | 494 | { |
r22874 | r22875 | |
1213 | 1221 | UINT8 lsd = 0, data = 0; |
1214 | 1222 | UINT8 rra = ra & 0x07; |
1215 | 1223 | int no_row = !BIT(ra, 3); |
| 1224 | int ra4 = BIT(ra, 4); |
1216 | 1225 | int chr_option = BIT(ma, 13); |
| 1226 | offs_t vma = (ma + column) & 0x1fff; |
| 1227 | offs_t drma = 0x8000 | ra4 << 14 | ((vma & 0xf00) << 1) | (vma & 0xff); |
1217 | 1228 | |
1218 | 1229 | // even character |
1219 | 1230 | |
1220 | | lsd = state->m_ram->pointer()[0x8000 | (((ma + column) << 1) & 0x1fff)]; |
| 1231 | lsd = state->m_ram->pointer()[drma]; |
1221 | 1232 | |
1222 | 1233 | offs_t char_addr = (chr_option << 11) | (state->m_graphic << 10) | ((lsd & 0x7f) << 3) | rra; |
1223 | 1234 | data = state->m_char_rom->base()[char_addr & char_rom_mask]; |
r22874 | r22875 | |
1230 | 1241 | |
1231 | 1242 | // odd character |
1232 | 1243 | |
1233 | | lsd = state->m_ram->pointer()[0x8000 | ((((ma + column) << 1) + 1) & 0x1fff)]; |
| 1244 | lsd = state->m_ram->pointer()[drma | 0x100]; |
1234 | 1245 | |
1235 | 1246 | char_addr = (chr_option << 11) | (state->m_graphic << 10) | ((lsd & 0x7f) << 3) | rra; |
1236 | 1247 | data = state->m_char_rom->base()[char_addr & char_rom_mask]; |
r22874 | r22875 | |
1395 | 1406 | static MACHINE_CONFIG_FRAGMENT( 4k ) |
1396 | 1407 | MCFG_RAM_ADD(RAM_TAG) |
1397 | 1408 | MCFG_RAM_DEFAULT_SIZE("4K") |
1398 | | MCFG_RAM_EXTRA_OPTIONS("8K, 16K,32K") |
| 1409 | MCFG_RAM_EXTRA_OPTIONS("8K,16K,32K") |
1399 | 1410 | MACHINE_CONFIG_END |
1400 | 1411 | |
1401 | 1412 | |