src/mess/drivers/osi.c
| r4384 | r4385 | |
| 180 | 180 | #include "cpu/m6502/m6502.h" |
| 181 | 181 | #include "includes/osi.h" |
| 182 | 182 | #include "machine/6850acia.h" |
| 183 | | #include "machine/6821pia.h" |
| 183 | #include "machine/6821new.h" |
| 184 | 184 | #include "sound/discrete.h" |
| 185 | 185 | #include "sound/beep.h" |
| 186 | 186 | #include "devices/basicdsk.h" |
| r4384 | r4385 | |
| 364 | 364 | driver_state->fdc_index = state; |
| 365 | 365 | } |
| 366 | 366 | |
| 367 | | static READ8_HANDLER( osi470_pia_a_r ) |
| 367 | static READ8_DEVICE_HANDLER( osi470_pia_a_r ) |
| 368 | 368 | { |
| 369 | 369 | |
| 370 | 370 | /* |
| r4384 | r4385 | |
| 382 | 382 | |
| 383 | 383 | */ |
| 384 | 384 | |
| 385 | | osi_state *state = space->machine->driver_data; |
| 385 | osi_state *state = device->machine->driver_data; |
| 386 | 386 | |
| 387 | 387 | return (state->fdc_index << 7); |
| 388 | 388 | } |
| 389 | 389 | |
| 390 | | static WRITE8_HANDLER( osi470_pia_a_w ) |
| 390 | static WRITE8_DEVICE_HANDLER( osi470_pia_a_w ) |
| 391 | 391 | { |
| 392 | 392 | /* |
| 393 | 393 | |
| r4384 | r4385 | |
| 405 | 405 | */ |
| 406 | 406 | } |
| 407 | 407 | |
| 408 | | static WRITE8_HANDLER( osi470_pia_b_w ) |
| 408 | static WRITE8_DEVICE_HANDLER( osi470_pia_b_w ) |
| 409 | 409 | { |
| 410 | 410 | /* |
| 411 | 411 | |
| r4384 | r4385 | |
| 423 | 423 | */ |
| 424 | 424 | } |
| 425 | 425 | |
| 426 | | static WRITE8_HANDLER( osi470_pia_cb2_w ) |
| 426 | static WRITE8_DEVICE_HANDLER( osi470_pia_cb2_w ) |
| 427 | 427 | { |
| 428 | 428 | } |
| 429 | 429 | |
| 430 | 430 | static const pia6821_interface osi470_pia_intf = |
| 431 | 431 | { |
| 432 | | osi470_pia_a_r, |
| 433 | | NULL, // read8_machine_func in_b_func, |
| 434 | | NULL, // read8_machine_func in_ca1_func, |
| 435 | | NULL, // read8_machine_func in_cb1_func, |
| 436 | | NULL, // read8_machine_func in_ca2_func, |
| 437 | | NULL, // read8_machine_func in_cb2_func, |
| 438 | | osi470_pia_a_w, |
| 439 | | osi470_pia_b_w, |
| 440 | | NULL, // write8_machine_func out_ca2_func, |
| 441 | | osi470_pia_cb2_w, |
| 442 | | NULL, // void (*irq_a_func)(int state), |
| 443 | | NULL, // void (*irq_b_func)(int state), |
| 432 | DEVCB_HANDLER(osi470_pia_a_r), |
| 433 | DEVCB_NULL, // read8_machine_func in_b_func, |
| 434 | DEVCB_NULL, // read8_machine_func in_ca1_func, |
| 435 | DEVCB_NULL, // read8_machine_func in_cb1_func, |
| 436 | DEVCB_NULL, // read8_machine_func in_ca2_func, |
| 437 | DEVCB_NULL, // read8_machine_func in_cb2_func, |
| 438 | DEVCB_HANDLER(osi470_pia_a_w), |
| 439 | DEVCB_HANDLER(osi470_pia_b_w), |
| 440 | DEVCB_NULL, // write8_machine_func out_ca2_func, |
| 441 | DEVCB_HANDLER(osi470_pia_cb2_w), |
| 442 | DEVCB_NULL, // void (*irq_a_func)(int state), |
| 443 | DEVCB_NULL, // void (*irq_b_func)(int state), |
| 444 | 444 | }; |
| 445 | 445 | |
| 446 | static const pia6821_interface pia_dummy_intf = |
| 447 | { |
| 448 | DEVCB_NULL, |
| 449 | DEVCB_NULL, |
| 450 | DEVCB_NULL, |
| 451 | DEVCB_NULL, |
| 452 | DEVCB_NULL, |
| 453 | DEVCB_NULL, |
| 454 | DEVCB_NULL, |
| 455 | DEVCB_NULL, |
| 456 | DEVCB_NULL, |
| 457 | DEVCB_NULL, |
| 458 | DEVCB_NULL, |
| 459 | DEVCB_NULL |
| 460 | }; |
| 461 | |
| 446 | 462 | /* Memory Maps */ |
| 447 | 463 | |
| 448 | 464 | static ADDRESS_MAP_START( osi600_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| r4384 | r4385 | |
| 468 | 484 | static ADDRESS_MAP_START( c1p_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 469 | 485 | AM_RANGE(0x0000, 0x4fff) AM_RAMBANK(1) |
| 470 | 486 | AM_RANGE(0xa000, 0xbfff) AM_ROM |
| 471 | | AM_RANGE(0xc704, 0xc707) AM_READWRITE(pia_1_r, pia_1_w) |
| 472 | | AM_RANGE(0xc708, 0xc70b) AM_READWRITE(pia_2_r, pia_2_w) |
| 473 | | AM_RANGE(0xc70c, 0xc70f) AM_READWRITE(pia_3_r, pia_3_w) |
| 487 | AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE(PIA6821, "pia_1", pia_r, pia_w) |
| 488 | AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE(PIA6821, "pia_2", pia_r, pia_w) |
| 489 | AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE(PIA6821, "pia_3", pia_r, pia_w) |
| 474 | 490 | AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_BASE_MEMBER(osi_state, video_ram) |
| 475 | 491 | AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_BASE_MEMBER(osi_state, color_ram) |
| 476 | 492 | AM_RANGE(0xd800, 0xd800) AM_WRITE(osi600_ctrl_w) |
| r4384 | r4385 | |
| 485 | 501 | static ADDRESS_MAP_START( c1pmf_mem, ADDRESS_SPACE_PROGRAM, 8 ) |
| 486 | 502 | AM_RANGE(0x0000, 0x4fff) AM_RAMBANK(1) |
| 487 | 503 | AM_RANGE(0xa000, 0xbfff) AM_ROM |
| 488 | | AM_RANGE(0xc000, 0xc003) AM_READWRITE(pia_0_r, pia_0_w) // FDC |
| 504 | AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE(PIA6821, "pia_0", pia_r, pia_w) // FDC |
| 489 | 505 | AM_RANGE(0xc010, 0xc010) AM_DEVREADWRITE(ACIA6850, "acia_1", acia6850_stat_r, acia6850_ctrl_w) |
| 490 | 506 | AM_RANGE(0xc011, 0xc011) AM_DEVREADWRITE(ACIA6850, "acia_1", acia6850_data_r, acia6850_data_w) |
| 491 | | AM_RANGE(0xc704, 0xc707) AM_READWRITE(pia_1_r, pia_1_w) |
| 492 | | AM_RANGE(0xc708, 0xc70b) AM_READWRITE(pia_2_r, pia_2_w) |
| 493 | | AM_RANGE(0xc70c, 0xc70f) AM_READWRITE(pia_3_r, pia_3_w) |
| 507 | AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE(PIA6821, "pia_1", pia_r, pia_w) |
| 508 | AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE(PIA6821, "pia_2", pia_r, pia_w) |
| 509 | AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE(PIA6821, "pia_3", pia_r, pia_w) |
| 494 | 510 | AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_BASE_MEMBER(osi_state, video_ram) |
| 495 | 511 | AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_BASE_MEMBER(osi_state, color_ram) |
| 496 | 512 | AM_RANGE(0xd800, 0xd800) AM_WRITE(osi600_ctrl_w) |
| r4384 | r4385 | |
| 711 | 727 | { |
| 712 | 728 | MACHINE_START_CALL(c1p); |
| 713 | 729 | |
| 714 | | /* configure floppy PIA */ |
| 715 | | pia_config(machine, 0, &osi470_pia_intf); |
| 716 | | |
| 717 | 730 | /* set floppy index hole callback */ |
| 718 | 731 | floppy_drive_set_index_pulse_callback(image_from_devtype_and_index(machine, IO_FLOPPY, 0), osi470_index_callback); |
| 719 | 732 | } |
| r4384 | r4385 | |
| 784 | 797 | MDRV_SOUND_ADD("beep", BEEP, 0) |
| 785 | 798 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 786 | 799 | |
| 800 | MDRV_PIA6821_ADD( "pia_1", pia_dummy_intf ) |
| 801 | MDRV_PIA6821_ADD( "pia_2", pia_dummy_intf ) |
| 802 | MDRV_PIA6821_ADD( "pia_3", pia_dummy_intf ) |
| 803 | |
| 787 | 804 | /* cassette ACIA */ |
| 788 | 805 | MDRV_ACIA6850_ADD("acia_0", osi600_acia_intf) |
| 789 | 806 | |
| r4384 | r4385 | |
| 799 | 816 | |
| 800 | 817 | MDRV_MACHINE_START(c1pmf) |
| 801 | 818 | |
| 819 | MDRV_PIA6821_ADD( "pia_0", osi470_pia_intf ) |
| 820 | |
| 802 | 821 | /* floppy ACIA */ |
| 803 | 822 | MDRV_ACIA6850_ADD("acia_1", osi470_acia_intf) |
| 804 | 823 | MACHINE_DRIVER_END |