src/mess/drivers/multi8.c
| r8626 | r8627 | |
| 8 | 8 | - dunno how to trigger the text color mode in BASIC, I just modify |
| 9 | 9 | $f0b1 to 1 for now |
| 10 | 10 | - bitmap B/W mode is untested |
| 11 | - Beeper keeps ringing, is it due of an HW failure? |
| 11 | 12 | |
| 12 | 13 | ****************************************************************************/ |
| 13 | 14 | |
| r8626 | r8627 | |
| 16 | 17 | #include "sound/2203intf.h" |
| 17 | 18 | #include "video/mc6845.h" |
| 18 | 19 | #include "machine/i8255a.h" |
| 20 | #include "sound/beep.h" |
| 19 | 21 | |
| 20 | 22 | static UINT8 mcu_init; |
| 21 | 23 | static UINT8 keyb_press,keyb_press_flag,display_reg; |
| r8626 | r8627 | |
| 237 | 239 | AM_RANGE(0x01, 0x01) AM_READ(key_status_r) AM_WRITENOP//keyboard |
| 238 | 240 | AM_RANGE(0x18, 0x19) AM_DEVWRITE("ymsnd", ym2203_w) |
| 239 | 241 | // AM_RANGE(0x18, 0x18) //opn read 0 |
| 240 | | // AM_RANGE(0x1a, 0x1a) //opn read 1 |
| 242 | AM_RANGE(0x1a, 0x1a) AM_DEVREAD("ymsnd", ym2203_r) |
| 241 | 243 | AM_RANGE(0x1c, 0x1d) AM_WRITE(multi8_6845_w) |
| 242 | 244 | // AM_RANGE(0x20, 0x21) //sio, cmt |
| 243 | 245 | // AM_RANGE(0x24, 0x27) //pit |
| r8626 | r8627 | |
| 411 | 413 | } |
| 412 | 414 | } |
| 413 | 415 | |
| 414 | | static MACHINE_START(multi8) |
| 415 | | { |
| 416 | | timer_pulse(machine, ATTOTIME_IN_HZ(240/32), NULL, 0, keyboard_callback); |
| 417 | | } |
| 418 | | |
| 419 | | static MACHINE_RESET(multi8) |
| 420 | | { |
| 421 | | mcu_init = 0; |
| 422 | | } |
| 423 | | |
| 424 | 416 | /* F4 Character Displayer */ |
| 425 | 417 | static const gfx_layout multi8_charlayout = |
| 426 | 418 | { |
| r8626 | r8627 | |
| 521 | 513 | DEVCB_HANDLER(portc_w) /* Port C write */ |
| 522 | 514 | }; |
| 523 | 515 | |
| 516 | static WRITE8_DEVICE_HANDLER( ym2203_porta_w ) |
| 517 | { |
| 518 | beep_set_state(device->machine->device("beeper"),data & 0x08); |
| 519 | } |
| 520 | |
| 521 | static const ym2203_interface ym2203_config = |
| 522 | { |
| 523 | { |
| 524 | AY8910_LEGACY_OUTPUT, |
| 525 | AY8910_DEFAULT_LOADS, |
| 526 | DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER( ym2203_porta_w ), DEVCB_NULL |
| 527 | }, |
| 528 | NULL |
| 529 | }; |
| 530 | |
| 531 | |
| 532 | static MACHINE_START(multi8) |
| 533 | { |
| 534 | timer_pulse(machine, ATTOTIME_IN_HZ(240/32), NULL, 0, keyboard_callback); |
| 535 | } |
| 536 | |
| 537 | static MACHINE_RESET(multi8) |
| 538 | { |
| 539 | beep_set_frequency(machine->device("beeper"),300); //guesswork |
| 540 | beep_set_state(machine->device("beeper"),0); |
| 541 | mcu_init = 0; |
| 542 | } |
| 543 | |
| 524 | 544 | static MACHINE_DRIVER_START( multi8 ) |
| 525 | 545 | /* basic machine hardware */ |
| 526 | 546 | MDRV_CPU_ADD("maincpu",Z80, XTAL_4MHz) |
| r8626 | r8627 | |
| 551 | 571 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| 552 | 572 | |
| 553 | 573 | MDRV_SOUND_ADD("ymsnd", YM2203, 1500000) //unknown clock / divider |
| 554 | | // MDRV_SOUND_CONFIG(ym2203_config) |
| 574 | MDRV_SOUND_CONFIG(ym2203_config) |
| 555 | 575 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 576 | |
| 577 | MDRV_SOUND_ADD("beeper", BEEP, 0) |
| 578 | MDRV_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.00) //FIXME: temporarly silenced |
| 556 | 579 | MACHINE_DRIVER_END |
| 557 | 580 | |
| 558 | 581 | /* ROM definition */ |