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 | |