diff options
Diffstat (limited to 'src/mame/drivers/ibmpcjr.cpp')
-rw-r--r-- | src/mame/drivers/ibmpcjr.cpp | 80 |
1 files changed, 42 insertions, 38 deletions
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp index 2492da2af95..1db58a6c4b8 100644 --- a/src/mame/drivers/ibmpcjr.cpp +++ b/src/mame/drivers/ibmpcjr.cpp @@ -542,44 +542,48 @@ static GFXDECODE_START( pcjr ) GFXDECODE_END -ADDRESS_MAP_START(pcjr_state::ibmpcjr_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8) - AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot2", generic_slot_device, read_rom) - AM_RANGE(0xe0000, 0xeffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pcjr_state::ibmpcjr_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x00a0, 0x00a0) AM_READWRITE(pcjr_nmi_enable_r, pc_nmi_enable_w ) - AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", sn76496_device, write) - AM_RANGE(0x00f2, 0x00f2) AM_WRITE(pcjr_fdc_dor_w) - AM_RANGE(0x00f4, 0x00f5) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w) - AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w) - AM_RANGE(0x0378, 0x037b) AM_DEVREADWRITE("lpt_0", pc_lpt_device, read, write) - AM_RANGE(0x03d0, 0x03df) AM_DEVREAD("pcvideo_pcjr", pcvideo_pcjr_device, read) AM_DEVWRITE("pcvideo_pcjr", pcvideo_pcjr_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcjr_state::ibmpcjx_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80000, 0xb7fff) AM_ROM AM_REGION("kanji",0) - AM_RANGE(0x80000, 0x9ffff) AM_RAM AM_SHARE("vram") // TODO: remove this part of vram hack - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8) - AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcjr_state::ibmpcjx_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM( ibmpcjr_io ) - AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(pcjx_port_1ff_r, pcjx_port_1ff_w) -ADDRESS_MAP_END +void pcjr_state::ibmpcjr_map(address_map &map) +{ + map.unmap_value_high(); + map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8)); + map(0xd0000, 0xdffff).r(m_cart2, FUNC(generic_slot_device::read_rom)); + map(0xe0000, 0xeffff).r(m_cart1, FUNC(generic_slot_device::read_rom)); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + + +void pcjr_state::ibmpcjr_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x0060, 0x0063).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x00a0, 0x00a0).rw(this, FUNC(pcjr_state::pcjr_nmi_enable_r), FUNC(pcjr_state::pc_nmi_enable_w)); + map(0x00c0, 0x00c0).w("sn76496", FUNC(sn76496_device::write)); + map(0x00f2, 0x00f2).w(this, FUNC(pcjr_state::pcjr_fdc_dor_w)); + map(0x00f4, 0x00f5).m(m_fdc, FUNC(upd765a_device::map)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x02f8, 0x02ff).rw("ins8250", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x0378, 0x037b).rw("lpt_0", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)); + map(0x03d0, 0x03df).r("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::read)).w("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::write)); +} + +void pcjr_state::ibmpcjx_map(address_map &map) +{ + map.unmap_value_high(); + map(0x80000, 0xb7fff).rom().region("kanji", 0); + map(0x80000, 0x9ffff).ram().share("vram"); // TODO: remove this part of vram hack + map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8)); + map(0xd0000, 0xdffff).r(m_cart1, FUNC(generic_slot_device::read_rom)); + map(0xe0000, 0xfffff).rom().region("bios", 0); +} + +void pcjr_state::ibmpcjx_io(address_map &map) +{ + map.unmap_value_high(); + ibmpcjr_io(map); + map(0x01ff, 0x01ff).rw(this, FUNC(pcjr_state::pcjx_port_1ff_r), FUNC(pcjr_state::pcjx_port_1ff_w)); +} MACHINE_CONFIG_START(pcjr_state::ibmpcjr) /* basic machine hardware */ |