trunk/src/mess/drivers/mbee.c
| r243413 | r243414 | |
| 90 | 90 | work. |
| 91 | 91 | |
| 92 | 92 | - various fdc issues: |
| 93 | | - only some ds40 disks can be used. All 80-track disks fail. |
| 94 | | - some disks show no or partial directory listing. |
| 95 | 93 | - some disks cause MESS to freeze. |
| 96 | 94 | - ENMF pin missing from wd_fdc. |
| 97 | 95 | - incorrect timing for track register causes 256tc failure to boot a disk. |
| r243413 | r243414 | |
| 101 | 99 | crashes due to a bug in z80pio emulation. |
| 102 | 100 | |
| 103 | 101 | - 256tc: Keyboard ROM U60 needs to be dumped. |
| 104 | | - 128k: PROM PAL needs to be dumped, so that the bankswitching can be fixed. |
| 102 | - 128k: PROM PAL needs to be dumped for the bankswitching. |
| 105 | 103 | |
| 106 | 104 | - Teleterm: keyboard is problematic, and cursor doesn't show. |
| 107 | 105 | |
| r243413 | r243414 | |
| 115 | 113 | and intrq/drq on read. |
| 116 | 114 | intrq and drq are OR'd together, then gated to bit 7 of the |
| 117 | 115 | data bus whenever port 48 is activated on read. There are |
| 118 | | no interrupts used in the disk system. |
| 116 | no interrupts used. |
| 119 | 117 | |
| 120 | | Despite the simplicity of this design, disks have not worked |
| 121 | | in the emulator for some years. Conversion to the new modern |
| 122 | | implementation (2013-07-05) has not resolved the issue. |
| 123 | | |
| 124 | 118 | ****************************************************************************/ |
| 125 | 119 | |
| 126 | 120 | |
| r243413 | r243414 | |
| 203 | 197 | AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w) |
| 204 | 198 | ADDRESS_MAP_END |
| 205 | 199 | |
| 206 | | static ADDRESS_MAP_START(mbee128_mem, AS_PROGRAM, 8, mbee_state) |
| 207 | | AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") |
| 208 | | AM_RANGE(0x1000, 0x7fff) AM_RAMBANK("bank1") |
| 209 | | AM_RANGE(0x8000, 0x87ff) AM_RAMBANK("bank8l") |
| 210 | | AM_RANGE(0x8800, 0x8fff) AM_RAMBANK("bank8h") |
| 211 | | AM_RANGE(0x9000, 0xefff) AM_RAMBANK("bank9") |
| 212 | | AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK("bankfl") |
| 213 | | AM_RANGE(0xf800, 0xffff) AM_RAMBANK("bankfh") |
| 214 | | ADDRESS_MAP_END |
| 215 | | |
| 216 | 200 | static ADDRESS_MAP_START(mbee256_mem, AS_PROGRAM, 8, mbee_state) |
| 217 | 201 | AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") |
| 218 | 202 | AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") |
| r243413 | r243414 | |
| 535 | 519 | PORT_START("X6") /* IN6 KEY ROW 6 [+30] */ |
| 536 | 520 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) |
| 537 | 521 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 538 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('u') PORT_CHAR('Y') PORT_CHAR(0x19) |
| 522 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHAR(0x19) |
| 539 | 523 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHAR(0x08) |
| 540 | 524 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ (num)") PORT_CODE(KEYCODE_SLASH_PAD) |
| 541 | 525 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("(Down)") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| r243413 | r243414 | |
| 587 | 571 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 588 | 572 | |
| 589 | 573 | PORT_START("X12") /* IN4 KEY ROW 4 [+60] */ |
| 590 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) |
| 574 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 591 | 575 | |
| 592 | 576 | PORT_START("X13") /* IN5 KEY ROW 5 [+68] */ |
| 593 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) |
| 577 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) |
| 594 | 578 | |
| 595 | 579 | PORT_START("X14") /* IN6 KEY ROW 6 [+70] */ |
| 596 | 580 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) |
| r243413 | r243414 | |
| 643 | 627 | MCFG_CPU_IO_MAP(mbee_io) |
| 644 | 628 | MCFG_CPU_CONFIG(mbee_daisy_chain) |
| 645 | 629 | |
| 646 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee ) |
| 630 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee) |
| 647 | 631 | |
| 648 | 632 | MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_12MHz / 6) |
| 649 | 633 | MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) |
| r243413 | r243414 | |
| 699 | 683 | MCFG_CPU_CONFIG(mbee_daisy_chain) |
| 700 | 684 | //MCFG_CPU_VBLANK_INT_DRIVER("screen", mbee_state, mbee_interrupt) |
| 701 | 685 | |
| 702 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee ) |
| 686 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee) |
| 703 | 687 | |
| 704 | 688 | MCFG_DEVICE_ADD("z80pio", Z80PIO, 3375000) |
| 705 | 689 | MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) |
| r243413 | r243414 | |
| 787 | 771 | MCFG_CPU_MODIFY( "maincpu" ) |
| 788 | 772 | MCFG_CPU_PROGRAM_MAP(mbee56_mem) |
| 789 | 773 | MCFG_CPU_IO_MAP(mbee56_io) |
| 790 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee56 ) |
| 774 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee56) |
| 791 | 775 | MCFG_WD2793x_ADD("fdc", XTAL_4MHz / 4) // divided by 2 externally, then divided by 2 internally (/ENMF pin not emulated) |
| 792 | 776 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(mbee_state, fdc_intrq_w)) |
| 793 | 777 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(mbee_state, fdc_drq_w)) |
| r243413 | r243414 | |
| 799 | 783 | MCFG_CPU_MODIFY( "maincpu" ) |
| 800 | 784 | MCFG_CPU_PROGRAM_MAP(mbee64_mem) |
| 801 | 785 | MCFG_CPU_IO_MAP(mbee64_io) |
| 802 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee64 ) |
| 786 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee64) |
| 803 | 787 | MACHINE_CONFIG_END |
| 804 | 788 | |
| 805 | 789 | static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc ) |
| 806 | 790 | MCFG_CPU_MODIFY( "maincpu" ) |
| 807 | | MCFG_CPU_PROGRAM_MAP(mbee128_mem) |
| 791 | MCFG_CPU_PROGRAM_MAP(mbee256_mem) |
| 808 | 792 | MCFG_CPU_IO_MAP(mbee128_io) |
| 809 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128 ) |
| 793 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128) |
| 810 | 794 | MCFG_WD2793x_ADD("fdc", XTAL_4MHz / 4) |
| 811 | 795 | MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(mbee_state, fdc_intrq_w)) |
| 812 | 796 | MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(mbee_state, fdc_drq_w)) |
| r243413 | r243414 | |
| 818 | 802 | MCFG_CPU_MODIFY( "maincpu" ) |
| 819 | 803 | MCFG_CPU_PROGRAM_MAP(mbee256_mem) |
| 820 | 804 | MCFG_CPU_IO_MAP(mbee256_io) |
| 821 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256 ) |
| 805 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee256) |
| 822 | 806 | MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz ) |
| 823 | 807 | |
| 824 | 808 | MCFG_DEVICE_REMOVE("crtc") |
| r243413 | r243414 | |
| 892 | 876 | ROM_REGION(0x10000,"maincpu", ROMREGION_ERASEFF) |
| 893 | 877 | ROM_LOAD("bas522a.rom", 0x8000, 0x2000, CRC(7896a696) SHA1(a158f7803296766160e1f258dfc46134735a9477) ) |
| 894 | 878 | ROM_LOAD("bas522b.rom", 0xa000, 0x2000, CRC(b21d9679) SHA1(332844433763331e9483409cd7da3f90ac58259d) ) |
| 895 | | |
| 896 | 879 | ROM_LOAD_OPTIONAL("telcom12.rom", 0xe000, 0x1000, CRC(0231bda3) SHA1(be7b32499034f985cc8f7865f2bc2b78c485585c) ) |
| 897 | 880 | |
| 898 | 881 | /* PAK option roms */ |
| r243413 | r243414 | |
| 1119 | 1102 | ROM_END |
| 1120 | 1103 | |
| 1121 | 1104 | ROM_START( mbee128 ) // 128K |
| 1122 | | ROM_REGION(0x20000,"maincpu", ROMREGION_ERASEFF) |
| 1105 | ROM_REGION(0x20000, "rams", ROMREGION_ERASEFF) |
| 1123 | 1106 | |
| 1124 | | ROM_REGION(0x7000,"bootrom", ROMREGION_ERASEFF) |
| 1107 | ROM_REGION(0x8000, "roms", 0) // rom plus optional undumped roms plus dummy area |
| 1125 | 1108 | ROM_SYSTEM_BIOS( 0, "bn60", "Version 2.03" ) |
| 1126 | 1109 | ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(1) ) |
| 1127 | 1110 | ROM_SYSTEM_BIOS( 1, "bn59", "Version 2.02" ) |
| r243413 | r243414 | |
| 1135 | 1118 | ROM_SYSTEM_BIOS( 5, "hd18", "Hard Disk System" ) |
| 1136 | 1119 | ROMX_LOAD("hd18.rom", 0x0000, 0x2000, CRC(ed53ace7) SHA1(534e2e00cc527197c76b3c106b3c9ff7f1328487), ROM_BIOS(6) ) |
| 1137 | 1120 | |
| 1121 | ROM_REGION(0x4000, "proms", 0) // undumped; using prom from 256tc for now |
| 1122 | ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) |
| 1123 | |
| 1138 | 1124 | ROM_REGION(0x9800, "gfx", 0) |
| 1139 | 1125 | ROM_LOAD("charrom.bin", 0x1000, 0x1000, CRC(1f9fcee4) SHA1(e57ac94e03638075dde68a0a8c834a4f84ba47b0) ) |
| 1140 | 1126 | ROM_RELOAD( 0x0000, 0x1000 ) |
trunk/src/mess/machine/mbee.c
| r243413 | r243414 | |
| 276 | 276 | |
| 277 | 277 | void mbee_state::mbee256_setup_banks(UINT8 data) |
| 278 | 278 | { |
| 279 | | data &= 0x3f; // U28 (bits 0-5 are referred to as S0-S5) |
| 279 | // (bits 0-5 are referred to as S0-S5) |
| 280 | 280 | address_space &mem = m_maincpu->space(AS_PROGRAM); |
| 281 | 281 | UINT8 *prom = memregion("proms")->base(); |
| 282 | 282 | UINT8 b_data = BITSWAP8(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3 |
| r243413 | r243414 | |
| 338 | 338 | |
| 339 | 339 | WRITE8_MEMBER( mbee_state::mbee256_50_w ) |
| 340 | 340 | { |
| 341 | | mbee256_setup_banks(data); |
| 341 | mbee256_setup_banks(data & 0x3f); |
| 342 | 342 | } |
| 343 | 343 | |
| 344 | 344 | /*********************************************************** |
| r243413 | r243414 | |
| 356 | 356 | |
| 357 | 357 | WRITE8_MEMBER( mbee_state::mbee128_50_w ) |
| 358 | 358 | { |
| 359 | | address_space &mem = m_maincpu->space(AS_PROGRAM); |
| 360 | | |
| 361 | | // primary low banks |
| 362 | | m_boot->set_entry((data & 3)); |
| 363 | | m_bank1->set_entry((data & 3)); |
| 364 | | |
| 365 | | // 9000-EFFF |
| 366 | | m_bank9->set_entry((data & 4) ? 1 : 0); |
| 367 | | |
| 368 | | // 8000-8FFF, F000-FFFF |
| 369 | | mem.unmap_readwrite (0x8000, 0x87ff); |
| 370 | | mem.unmap_readwrite (0x8800, 0x8fff); |
| 371 | | mem.unmap_readwrite (0xf000, 0xf7ff); |
| 372 | | mem.unmap_readwrite (0xf800, 0xffff); |
| 373 | | |
| 374 | | switch (data & 0x1c) |
| 375 | | { |
| 376 | | case 0x00: |
| 377 | | mem.install_read_bank (0x8000, 0x87ff, "bank8l"); |
| 378 | | mem.install_read_bank (0x8800, 0x8fff, "bank8h"); |
| 379 | | mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w),this)); |
| 380 | | mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this)); |
| 381 | | m_bank8l->set_entry(0); // rom |
| 382 | | m_bank8h->set_entry(0); // rom |
| 383 | | break; |
| 384 | | case 0x04: |
| 385 | | // these 2 lines were read_bank but readwrite is needed for bios 2,3,4,5 to boot |
| 386 | | mem.install_readwrite_bank (0x8000, 0x87ff, "bank8l"); |
| 387 | | mem.install_readwrite_bank (0x8800, 0x8fff, "bank8h"); |
| 388 | | mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w),this)); |
| 389 | | mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this)); |
| 390 | | m_bank8l->set_entry(1); // ram |
| 391 | | m_bank8h->set_entry(1); // ram |
| 392 | | break; |
| 393 | | case 0x08: |
| 394 | | case 0x18: |
| 395 | | mem.install_read_bank (0x8000, 0x87ff, "bank8l"); |
| 396 | | mem.install_read_bank (0x8800, 0x8fff, "bank8h"); |
| 397 | | mem.install_read_bank (0xf000, 0xf7ff, "bankfl"); |
| 398 | | mem.install_read_bank (0xf800, 0xffff, "bankfh"); |
| 399 | | m_bank8l->set_entry(0); // rom |
| 400 | | m_bank8h->set_entry(0); // rom |
| 401 | | m_bankfl->set_entry(0); // ram |
| 402 | | m_bankfh->set_entry(0); // ram |
| 403 | | break; |
| 404 | | case 0x0c: |
| 405 | | case 0x1c: |
| 406 | | mem.install_read_bank (0x8000, 0x87ff, "bank8l"); |
| 407 | | mem.install_read_bank (0x8800, 0x8fff, "bank8h"); |
| 408 | | mem.install_read_bank (0xf000, 0xf7ff, "bankfl"); |
| 409 | | mem.install_read_bank (0xf800, 0xffff, "bankfh"); |
| 410 | | m_bank8l->set_entry(1); // ram |
| 411 | | m_bank8h->set_entry(1); // ram |
| 412 | | m_bankfl->set_entry(0); // ram |
| 413 | | m_bankfh->set_entry(0); // ram |
| 414 | | break; |
| 415 | | case 0x10: |
| 416 | | case 0x14: |
| 417 | | mem.install_readwrite_handler (0x8000, 0x87ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w),this)); |
| 418 | | mem.install_readwrite_handler (0x8800, 0x8fff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this)); |
| 419 | | mem.install_read_bank (0xf000, 0xf7ff, "bankfl"); |
| 420 | | mem.install_read_bank (0xf800, 0xffff, "bankfh"); |
| 421 | | m_bankfl->set_entry(0); // ram |
| 422 | | m_bankfh->set_entry(0); // ram |
| 423 | | break; |
| 424 | | } |
| 359 | mbee256_setup_banks(data & 0x1f); // S5 not used |
| 425 | 360 | } |
| 426 | 361 | |
| 427 | 362 | |
| r243413 | r243414 | |
| 507 | 442 | |
| 508 | 443 | |
| 509 | 444 | /* after the first 4 bytes have been read from ROM, switch the ram back in */ |
| 510 | | TIMER_CALLBACK_MEMBER(mbee_state::mbee_reset) |
| 445 | TIMER_CALLBACK_MEMBER( mbee_state::mbee_reset ) |
| 511 | 446 | { |
| 512 | 447 | m_boot->set_entry(0); |
| 513 | 448 | } |
| r243413 | r243414 | |
| 517 | 452 | m_fdc_rq = 0; |
| 518 | 453 | } |
| 519 | 454 | |
| 520 | | MACHINE_RESET_MEMBER(mbee_state,mbee) |
| 455 | MACHINE_RESET_MEMBER( mbee_state, mbee ) |
| 521 | 456 | { |
| 522 | 457 | m_boot->set_entry(1); |
| 523 | 458 | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 524 | 459 | } |
| 525 | 460 | |
| 526 | | MACHINE_RESET_MEMBER(mbee_state,mbee56) |
| 461 | MACHINE_RESET_MEMBER( mbee_state, mbee56 ) |
| 527 | 462 | { |
| 528 | 463 | machine_reset_common_disk(); |
| 529 | 464 | m_boot->set_entry(1); |
| 530 | 465 | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 531 | 466 | } |
| 532 | 467 | |
| 533 | | MACHINE_RESET_MEMBER(mbee_state,mbee64) |
| 468 | MACHINE_RESET_MEMBER( mbee_state, mbee64 ) |
| 534 | 469 | { |
| 535 | 470 | machine_reset_common_disk(); |
| 536 | 471 | m_boot->set_entry(1); |
| r243413 | r243414 | |
| 538 | 473 | m_bankh->set_entry(1); |
| 539 | 474 | } |
| 540 | 475 | |
| 541 | | MACHINE_RESET_MEMBER(mbee_state,mbee128) |
| 476 | MACHINE_RESET_MEMBER( mbee_state, mbee128 ) |
| 542 | 477 | { |
| 543 | | address_space &mem = m_maincpu->space(AS_IO); |
| 544 | 478 | machine_reset_common_disk(); |
| 545 | | mbee128_50_w(mem,0,0); // set banks to default |
| 546 | | m_boot->set_entry(8); // boot time |
| 479 | mbee256_setup_banks(0); // set banks to default |
| 480 | m_maincpu->set_pc(0x8000); |
| 547 | 481 | } |
| 548 | 482 | |
| 549 | | MACHINE_RESET_MEMBER(mbee_state,mbee256) |
| 483 | MACHINE_RESET_MEMBER( mbee_state, mbee256 ) |
| 550 | 484 | { |
| 551 | 485 | UINT8 i; |
| 552 | | machine_reset_common_disk(); |
| 553 | 486 | for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0; |
| 554 | 487 | m_mbee256_q_pos = 0; |
| 488 | machine_reset_common_disk(); |
| 555 | 489 | mbee256_setup_banks(0); // set banks to default |
| 556 | 490 | m_maincpu->set_pc(0x8000); |
| 557 | 491 | } |
| 558 | 492 | |
| 559 | | MACHINE_RESET_MEMBER(mbee_state,mbeett) |
| 493 | MACHINE_RESET_MEMBER( mbee_state, mbeett ) |
| 560 | 494 | { |
| 561 | 495 | UINT8 i; |
| 562 | 496 | for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0; |
| r243413 | r243414 | |
| 565 | 499 | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 566 | 500 | } |
| 567 | 501 | |
| 568 | | INTERRUPT_GEN_MEMBER(mbee_state::mbee_interrupt) |
| 502 | INTERRUPT_GEN_MEMBER( mbee_state::mbee_interrupt ) |
| 569 | 503 | { |
| 570 | 504 | // Due to the uncertainly and hackage here, this is commented out for now - Robbbert - 05-Oct-2010 |
| 571 | 505 | #if 0 |
| r243413 | r243414 | |
| 588 | 522 | #endif |
| 589 | 523 | } |
| 590 | 524 | |
| 591 | | DRIVER_INIT_MEMBER(mbee_state,mbee) |
| 525 | DRIVER_INIT_MEMBER( mbee_state, mbee ) |
| 592 | 526 | { |
| 593 | 527 | UINT8 *RAM = memregion("maincpu")->base(); |
| 594 | 528 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |
| 595 | 529 | m_size = 0x4000; |
| 596 | 530 | } |
| 597 | 531 | |
| 598 | | DRIVER_INIT_MEMBER(mbee_state,mbeeic) |
| 532 | DRIVER_INIT_MEMBER( mbee_state, mbeeic ) |
| 599 | 533 | { |
| 600 | 534 | UINT8 *RAM = memregion("maincpu")->base(); |
| 601 | 535 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |
| r243413 | r243414 | |
| 607 | 541 | m_size = 0x8000; |
| 608 | 542 | } |
| 609 | 543 | |
| 610 | | DRIVER_INIT_MEMBER(mbee_state,mbeepc) |
| 544 | DRIVER_INIT_MEMBER( mbee_state, mbeepc ) |
| 611 | 545 | { |
| 612 | 546 | UINT8 *RAM = memregion("maincpu")->base(); |
| 613 | 547 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |
| r243413 | r243414 | |
| 623 | 557 | m_size = 0x8000; |
| 624 | 558 | } |
| 625 | 559 | |
| 626 | | DRIVER_INIT_MEMBER(mbee_state,mbeepc85) |
| 560 | DRIVER_INIT_MEMBER( mbee_state, mbeepc85 ) |
| 627 | 561 | { |
| 628 | 562 | UINT8 *RAM = memregion("maincpu")->base(); |
| 629 | 563 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |
| r243413 | r243414 | |
| 639 | 573 | m_size = 0x8000; |
| 640 | 574 | } |
| 641 | 575 | |
| 642 | | DRIVER_INIT_MEMBER(mbee_state,mbeeppc) |
| 576 | DRIVER_INIT_MEMBER( mbee_state, mbeeppc ) |
| 643 | 577 | { |
| 644 | 578 | UINT8 *RAM = memregion("maincpu")->base(); |
| 645 | 579 | m_boot->configure_entry(0, &RAM[0x0000]); |
| r243413 | r243414 | |
| 660 | 594 | m_size = 0x8000; |
| 661 | 595 | } |
| 662 | 596 | |
| 663 | | DRIVER_INIT_MEMBER(mbee_state,mbee56) |
| 597 | DRIVER_INIT_MEMBER( mbee_state, mbee56 ) |
| 664 | 598 | { |
| 665 | 599 | UINT8 *RAM = memregion("maincpu")->base(); |
| 666 | 600 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000); |
| 667 | 601 | m_size = 0xe000; |
| 668 | 602 | } |
| 669 | 603 | |
| 670 | | DRIVER_INIT_MEMBER(mbee_state,mbee64) |
| 604 | DRIVER_INIT_MEMBER( mbee_state, mbee64 ) |
| 671 | 605 | { |
| 672 | 606 | UINT8 *RAM = memregion("maincpu")->base(); |
| 673 | 607 | m_boot->configure_entry(0, &RAM[0x0000]); |
| r243413 | r243414 | |
| 682 | 616 | m_size = 0xf000; |
| 683 | 617 | } |
| 684 | 618 | |
| 685 | | DRIVER_INIT_MEMBER(mbee_state,mbee128) |
| 619 | DRIVER_INIT_MEMBER( mbee_state, mbee128 ) |
| 686 | 620 | { |
| 687 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 688 | | m_boot->configure_entries(0, 4, &RAM[0x0000], 0x8000); // standard banks 0000 |
| 689 | | m_bank1->configure_entries(0, 4, &RAM[0x1000], 0x8000); // standard banks 1000 |
| 690 | | m_bank8l->configure_entry(1, &RAM[0x0000]); // shadow ram |
| 691 | | m_bank8h->configure_entry(1, &RAM[0x0800]); // shadow ram |
| 692 | | m_bank9->configure_entry(1, &RAM[0x1000]); // shadow ram |
| 693 | | m_bankfl->configure_entry(0, &RAM[0xf000]); // shadow ram |
| 694 | | m_bankfh->configure_entry(0, &RAM[0xf800]); // shadow ram |
| 621 | UINT8 *RAM = memregion("rams")->base(); |
| 622 | UINT8 *ROM = memregion("roms")->base(); |
| 623 | char banktag[10]; |
| 695 | 624 | |
| 696 | | RAM = memregion("bootrom")->base(); |
| 697 | | m_bank9->configure_entry(0, &RAM[0x1000]); // rom |
| 698 | | m_boot->configure_entry(8, &RAM[0x0000]); // rom at boot for 4usec |
| 699 | | m_bank8l->configure_entry(0, &RAM[0x0000]); // rom |
| 700 | | m_bank8h->configure_entry(0, &RAM[0x0800]); // rom |
| 625 | for (UINT8 b_bank = 0; b_bank < 16; b_bank++) |
| 626 | { |
| 627 | sprintf(banktag, "bankr%d", b_bank); |
| 628 | membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks |
| 629 | membank(banktag)->configure_entries(64, 4, &ROM[0x0000], 0x1000); // rom |
| 701 | 630 | |
| 631 | sprintf(banktag, "bankw%d", b_bank); |
| 632 | membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks |
| 633 | membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom |
| 634 | } |
| 635 | |
| 702 | 636 | m_size = 0x8000; |
| 703 | 637 | } |
| 704 | 638 | |
| 705 | | DRIVER_INIT_MEMBER(mbee_state,mbee256) |
| 639 | DRIVER_INIT_MEMBER( mbee_state, mbee256 ) |
| 706 | 640 | { |
| 707 | 641 | UINT8 *RAM = memregion("rams")->base(); |
| 708 | 642 | UINT8 *ROM = memregion("roms")->base(); |
| r243413 | r243414 | |
| 725 | 659 | m_size = 0x8000; |
| 726 | 660 | } |
| 727 | 661 | |
| 728 | | DRIVER_INIT_MEMBER(mbee_state,mbeett) |
| 662 | DRIVER_INIT_MEMBER( mbee_state, mbeett ) |
| 729 | 663 | { |
| 730 | 664 | UINT8 *RAM = memregion("maincpu")->base(); |
| 731 | 665 | m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000); |