Previous 15994 Revisions Next

r4385 Wednesday 4th March, 2009 at 20:50:35 UTC by Wilbert Pol
[OSI] Converted drivers to use the new 6821 pia device implementation
[src/mess/drivers]osi.c

src/mess/drivers/osi.c
r4384r4385
180180#include "cpu/m6502/m6502.h"
181181#include "includes/osi.h"
182182#include "machine/6850acia.h"
183#include "machine/6821pia.h"
183#include "machine/6821new.h"
184184#include "sound/discrete.h"
185185#include "sound/beep.h"
186186#include "devices/basicdsk.h"
r4384r4385
364364   driver_state->fdc_index = state;
365365}
366366
367static READ8_HANDLER( osi470_pia_a_r )
367static READ8_DEVICE_HANDLER( osi470_pia_a_r )
368368{
369369
370370   /*
r4384r4385
382382
383383   */
384384
385   osi_state *state = space->machine->driver_data;
385   osi_state *state = device->machine->driver_data;
386386
387387   return (state->fdc_index << 7);
388388}
389389
390static WRITE8_HANDLER( osi470_pia_a_w )
390static WRITE8_DEVICE_HANDLER( osi470_pia_a_w )
391391{
392392   /*
393393
r4384r4385
405405   */
406406}
407407
408static WRITE8_HANDLER( osi470_pia_b_w )
408static WRITE8_DEVICE_HANDLER( osi470_pia_b_w )
409409{
410410   /*
411411
r4384r4385
423423   */
424424}
425425
426static WRITE8_HANDLER( osi470_pia_cb2_w )
426static WRITE8_DEVICE_HANDLER( osi470_pia_cb2_w )
427427{
428428}
429429
430430static const pia6821_interface osi470_pia_intf =
431431{
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),
444444};
445445
446static 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
446462/* Memory Maps */
447463
448464static ADDRESS_MAP_START( osi600_mem, ADDRESS_SPACE_PROGRAM, 8 )
r4384r4385
468484static ADDRESS_MAP_START( c1p_mem, ADDRESS_SPACE_PROGRAM, 8 )
469485   AM_RANGE(0x0000, 0x4fff) AM_RAMBANK(1)
470486   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)
474490   AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_BASE_MEMBER(osi_state, video_ram)
475491   AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_BASE_MEMBER(osi_state, color_ram)
476492   AM_RANGE(0xd800, 0xd800) AM_WRITE(osi600_ctrl_w)
r4384r4385
485501static ADDRESS_MAP_START( c1pmf_mem, ADDRESS_SPACE_PROGRAM, 8 )
486502   AM_RANGE(0x0000, 0x4fff) AM_RAMBANK(1)
487503   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
489505   AM_RANGE(0xc010, 0xc010) AM_DEVREADWRITE(ACIA6850, "acia_1", acia6850_stat_r, acia6850_ctrl_w)
490506   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)
494510   AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_BASE_MEMBER(osi_state, video_ram)
495511   AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_BASE_MEMBER(osi_state, color_ram)
496512   AM_RANGE(0xd800, 0xd800) AM_WRITE(osi600_ctrl_w)
r4384r4385
711727{
712728   MACHINE_START_CALL(c1p);
713729
714   /* configure floppy PIA */
715   pia_config(machine, 0, &osi470_pia_intf);
716
717730   /* set floppy index hole callback */
718731   floppy_drive_set_index_pulse_callback(image_from_devtype_and_index(machine, IO_FLOPPY, 0), osi470_index_callback);
719732}
r4384r4385
784797   MDRV_SOUND_ADD("beep", BEEP, 0)
785798   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
786799
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
787804   /* cassette ACIA */
788805   MDRV_ACIA6850_ADD("acia_0", osi600_acia_intf)
789806
r4384r4385
799816
800817   MDRV_MACHINE_START(c1pmf)
801818
819   MDRV_PIA6821_ADD( "pia_0", osi470_pia_intf )
820
802821   /* floppy ACIA */
803822   MDRV_ACIA6850_ADD("acia_1", osi470_acia_intf)
804823MACHINE_DRIVER_END

Previous 15994 Revisions Next


© 1998-2018 The MESS Team