src/mess/drivers/pasopia.c
| r8683 | r8684 | |
| 285 | 285 | |
| 286 | 286 | static WRITE8_HANDLER( pac2_w ) |
| 287 | 287 | { |
| 288 | UINT8 *pac2_ram1 = memory_region(space->machine, "rampac1"); |
| 289 | UINT8 *pac2_ram2 = memory_region(space->machine, "rampac2"); |
| 290 | |
| 288 | 291 | /* |
| 289 | 292 | select register: |
| 290 | 293 | 4 = ram1; |
| r8683 | r8684 | |
| 297 | 300 | |
| 298 | 301 | switch(offset) |
| 299 | 302 | { |
| 300 | | case 0: pac2_index[pac2_bank_select] = (pac2_index[pac2_bank_select] & 0x7f00) | (data & 0xff); break; |
| 303 | case 0: pac2_index[pac2_bank_select] = (pac2_index[pac2_bank_select] & 0x7f00) | (data & 0xff); break; |
| 301 | 304 | case 1: pac2_index[pac2_bank_select] = (pac2_index[pac2_bank_select] & 0xff) | ((data & 0x7f) << 8); break; |
| 302 | 305 | case 2: // RAM write |
| 303 | | printf("Warning: write to RAM packs\n"); |
| 306 | if(pac2_bank_select == 3) |
| 307 | pac2_ram1[pac2_index[pac2_bank_select]] = data; |
| 308 | else if(pac2_bank_select == 4) |
| 309 | pac2_ram2[pac2_index[pac2_bank_select]] = data; |
| 304 | 310 | break; |
| 305 | 311 | case 3: |
| 306 | 312 | { |
| r8683 | r8684 | |
| 317 | 323 | |
| 318 | 324 | static READ8_HANDLER( pac2_r ) |
| 319 | 325 | { |
| 320 | | UINT8 *pac2_ram = memory_region(space->machine, "rampac1"); |
| 326 | UINT8 *pac2_ram1 = memory_region(space->machine, "rampac1"); |
| 327 | UINT8 *pac2_ram2 = memory_region(space->machine, "rampac2"); |
| 321 | 328 | |
| 322 | 329 | if(offset == 2) |
| 323 | 330 | { |
| 324 | | if(pac2_bank_select == 4) |
| 325 | | { |
| 326 | | return pac2_ram[pac2_index[4]]; |
| 327 | | } |
| 331 | if(pac2_bank_select == 3) |
| 332 | return pac2_ram1[pac2_index[pac2_bank_select]]; |
| 333 | else if(pac2_bank_select == 4) |
| 334 | return pac2_ram2[pac2_index[pac2_bank_select]]; |
| 328 | 335 | else |
| 329 | 336 | { |
| 330 | 337 | printf("%02x\n",pac2_bank_select); |
| r8683 | r8684 | |
| 383 | 390 | if(io_port >= 0x08 && io_port <= 0x0b) { return i8255a_r(space->machine->device("ppi8255_0"), (io_port-0x08) & 3); } |
| 384 | 391 | else if(io_port >= 0x0c && io_port <= 0x0f) { return i8255a_r(space->machine->device("ppi8255_1"), (io_port-0x0c) & 3); } |
| 385 | 392 | // else if(io_port == 0x10 || io_port == 0x11) { M6845 read } |
| 386 | | else if(io_port >= 0x18 && io_port <= 0x1b) { return pac2_r(space, io_port-0x1b); } |
| 393 | else if(io_port >= 0x18 && io_port <= 0x1b) { return pac2_r(space, io_port-0x18); } |
| 387 | 394 | else if(io_port >= 0x20 && io_port <= 0x23) { return i8255a_r(space->machine->device("ppi8255_2"), (io_port-0x20) & 3); } |
| 388 | 395 | else if(io_port >= 0x28 && io_port <= 0x2b) { return z80ctc_r(space->machine->device("ctc"), io_port-0x28); } |
| 389 | 396 | else if(io_port >= 0x30 && io_port <= 0x33) { return z80pio_cd_ba_r(space->machine->device("z80pio_0"), (io_port-0x30) & 3); } |
| r8683 | r8684 | |
| 415 | 422 | if(io_port >= 0x08 && io_port <= 0x0b) { i8255a_w(space->machine->device("ppi8255_0"), (io_port-0x08) & 3, data); } |
| 416 | 423 | else if(io_port >= 0x0c && io_port <= 0x0f) { i8255a_w(space->machine->device("ppi8255_1"), (io_port-0x0c) & 3, data); } |
| 417 | 424 | else if(io_port >= 0x10 && io_port <= 0x11) { pasopia7_6845_w(space, io_port-0x10, data); } |
| 418 | | else if(io_port >= 0x18 && io_port <= 0x1b) { pac2_w(space, io_port-0x1b, data); } |
| 425 | else if(io_port >= 0x18 && io_port <= 0x1b) { pac2_w(space, io_port-0x18, data); } |
| 419 | 426 | else if(io_port >= 0x20 && io_port <= 0x23) { i8255a_w(space->machine->device("ppi8255_2"), (io_port-0x20) & 3, data); } |
| 420 | 427 | else if(io_port >= 0x28 && io_port <= 0x2b) { z80ctc_w(space->machine->device("ctc"), io_port-0x28,data); } |
| 421 | 428 | else if(io_port >= 0x30 && io_port <= 0x33) { z80pio_cd_ba_w(space->machine->device("z80pio_0"), (io_port-0x30) & 3, data); } |
| r8683 | r8684 | |
| 730 | 737 | ROM_REGION( 0x20000, "kanji", ROMREGION_ERASEFF ) |
| 731 | 738 | ROM_LOAD( "kanji.rom", 0x0000, 0x20000, CRC(6109e308) SHA1(5c21cf1f241ef1fa0b41009ea41e81771729785f)) |
| 732 | 739 | |
| 733 | | ROM_REGION( 0x8000, "rampac1", ROMREGION_ERASE00 ) |
| 740 | ROM_REGION( 0x8000, "rampac1", ROMREGION_ERASEFF ) |
| 734 | 741 | // ROM_LOAD( "rampac1.bin", 0x0000, 0x8000, CRC(0e4f09bd) SHA1(4088906d57e4f6085a75b249a6139a0e2eb531a1) ) |
| 735 | 742 | |
| 736 | | ROM_REGION( 0x8000, "rampac2", ROMREGION_ERASE00 ) |
| 743 | ROM_REGION( 0x8000, "rampac2", ROMREGION_ERASEFF ) |
| 737 | 744 | // ROM_LOAD( "rampac2.bin", 0x0000, 0x8000, CRC(0e4f09bd) SHA1(4088906d57e4f6085a75b249a6139a0e2eb531a1) ) |
| 738 | 745 | ROM_END |
| 739 | 746 | |