diff options
-rw-r--r-- | src/mame/drivers/nanos.cpp | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index f9c2ccc6a2d..f38de914a6f 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -39,6 +39,7 @@ public: , m_ctc_0(*this, "z80ctc_0") , m_ctc_1(*this, "z80ctc_1") , m_fdc(*this, "upd765") + , m_floppy(*this, "upd765:0") , m_key_t(*this, "keyboard_timer") , m_ram(*this, RAM_TAG) , m_region_maincpu(*this, "maincpu") @@ -52,28 +53,31 @@ public: void nanos(machine_config &config); +protected: + virtual void machine_reset() override; + virtual void machine_start() override; + private: - DECLARE_WRITE8_MEMBER( nanos_tc_w ); - DECLARE_WRITE_LINE_MEMBER( ctc_z0_w ); - DECLARE_WRITE_LINE_MEMBER( ctc_z1_w ); - DECLARE_WRITE_LINE_MEMBER( ctc_z2_w ); + DECLARE_WRITE8_MEMBER(tc_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z0_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z2_w); TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback); DECLARE_WRITE_LINE_MEMBER(z80daisy_interrupt); - DECLARE_READ8_MEMBER(nanos_port_a_r); - DECLARE_READ8_MEMBER(nanos_port_b_r); - DECLARE_WRITE8_MEMBER(nanos_port_b_w); - DECLARE_FLOPPY_FORMATS( floppy_formats ); + DECLARE_READ8_MEMBER(port_a_r); + DECLARE_READ8_MEMBER(port_b_r); + DECLARE_WRITE8_MEMBER(port_b_w); + DECLARE_FLOPPY_FORMATS(floppy_formats); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void nanos_io(address_map &map); - void nanos_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); uint8_t m_key_command; uint8_t m_last_code; uint8_t m_key_pressed; uint8_t row_number(uint8_t code); - virtual void machine_reset() override; - virtual void machine_start() override; + required_device<cpu_device> m_maincpu; required_device<z80pio_device> m_pio; required_device<z80pio_device> m_pio_0; @@ -83,6 +87,7 @@ private: required_device<z80ctc_device> m_ctc_0; required_device<z80ctc_device> m_ctc_1; required_device<upd765a_device> m_fdc; + required_device<floppy_connector> m_floppy; required_device<timer_device> m_key_t; required_device<ram_device> m_ram; required_memory_region m_region_maincpu; @@ -96,13 +101,13 @@ private: -void nanos_state::nanos_mem(address_map &map) +void nanos_state::mem_map(address_map &map) { - map(0x0000, 0x0fff).bankr("bank1").bankw("bank3"); - map(0x1000, 0xffff).bankrw("bank2"); + map(0x0000, 0x0fff).bankr(m_bank1).bankw(m_bank3); + map(0x1000, 0xffff).bankrw(m_bank2); } -WRITE8_MEMBER(nanos_state::nanos_tc_w) +WRITE8_MEMBER(nanos_state::tc_w) { m_fdc->tc_w(BIT(data,1)); } @@ -110,15 +115,15 @@ WRITE8_MEMBER(nanos_state::nanos_tc_w) /* Z80-CTC Interface */ -WRITE_LINE_MEMBER( nanos_state::ctc_z0_w ) +WRITE_LINE_MEMBER(nanos_state::ctc_z0_w) { } -WRITE_LINE_MEMBER( nanos_state::ctc_z1_w ) +WRITE_LINE_MEMBER(nanos_state::ctc_z1_w) { } -WRITE_LINE_MEMBER( nanos_state::ctc_z2_w ) +WRITE_LINE_MEMBER(nanos_state::ctc_z2_w) { } @@ -143,7 +148,7 @@ static const z80_daisy_config nanos_daisy_chain[] = { nullptr } }; -void nanos_state::nanos_io(address_map &map) +void nanos_state::io_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); @@ -157,7 +162,7 @@ void nanos_state::nanos_io(address_map &map) map(0x8C, 0x8F).rw(m_ctc_0, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); /* FDC card */ - map(0x92, 0x92).w(FUNC(nanos_state::nanos_tc_w)); + map(0x92, 0x92).w(FUNC(nanos_state::tc_w)); map(0x94, 0x95).m(m_fdc, FUNC(upd765a_device::map)); /* V24+IFSS card */ map(0xA0, 0xA3).rw(m_sio_0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); @@ -257,14 +262,14 @@ INPUT_PORTS_END uint32_t nanos_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { // static uint8_t framecnt=0; - uint8_t y,ra,chr,gfx; + uint8_t gfx; uint16_t sy=0,ma=0,x; // framecnt++; - for (y = 0; y < 25; y++) + for (uint8_t y = 0; y < 25; y++) { - for (ra = 0; ra < 10; ra++) + for (uint8_t ra = 0; ra < 10; ra++) { uint16_t *p = &bitmap.pix16(sy++); @@ -272,7 +277,7 @@ uint32_t nanos_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, { if (ra < 8) { - chr = m_ram->pointer()[0xf800+ x]; + uint8_t chr = m_ram->pointer()[0xf800+ x]; /* get pattern of pixels for that character scanline */ gfx = m_p_chargen[(chr<<3) | ra ]; @@ -296,25 +301,24 @@ uint32_t nanos_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -READ8_MEMBER(nanos_state::nanos_port_a_r) +READ8_MEMBER(nanos_state::port_a_r) { - uint8_t retVal; if (m_key_command==0) { return m_key_pressed; } else { - retVal = m_last_code; + uint8_t retVal = m_last_code; m_last_code = 0; return retVal; } } -READ8_MEMBER(nanos_state::nanos_port_b_r) +READ8_MEMBER(nanos_state::port_b_r) { return 0xff; } -WRITE8_MEMBER(nanos_state::nanos_port_b_w) +WRITE8_MEMBER(nanos_state::port_b_w) { m_key_command = BIT(data,1); if (BIT(data,7)) { @@ -339,15 +343,13 @@ uint8_t nanos_state::row_number(uint8_t code) TIMER_DEVICE_CALLBACK_MEMBER(nanos_state::keyboard_callback) { - int i; - uint8_t code; uint8_t key_code = 0; uint8_t shift = m_linec->read() & 0x02 ? 1 : 0; uint8_t ctrl = m_linec->read() & 0x01 ? 1 : 0; m_key_pressed = 0xff; - for(i = 0; i < 7; i++) + for(int i = 0; i < 7; i++) { - code = m_lines[i]->read(); + uint8_t code = m_lines[i]->read(); if (code != 0) { if (i==0 && shift==0) { @@ -433,7 +435,7 @@ void nanos_state::machine_reset() m_bank2->set_base(m_ram->pointer() + 0x1000); m_bank3->set_base(m_ram->pointer()); - machine().device<floppy_connector>("upd765:0")->get_device()->mon_w(false); + m_floppy->get_device()->mon_w(false); } FLOPPY_FORMATS_MEMBER( nanos_state::floppy_formats ) @@ -465,9 +467,9 @@ GFXDECODE_END MACHINE_CONFIG_START(nanos_state::nanos) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(nanos_mem) - MCFG_DEVICE_IO_MAP(nanos_io) + MCFG_DEVICE_ADD(m_maincpu,Z80, XTAL(4'000'000)) + MCFG_DEVICE_PROGRAM_MAP(mem_map) + MCFG_DEVICE_IO_MAP(io_map) MCFG_Z80_DAISY_CHAIN(nanos_daisy_chain) /* video hardware */ @@ -483,38 +485,38 @@ MACHINE_CONFIG_START(nanos_state::nanos) MCFG_PALETTE_ADD_MONOCHROME("palette") /* devices */ - MCFG_DEVICE_ADD("z80ctc_0", Z80CTC, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_ctc_0, Z80CTC, XTAL(4'000'000)) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_Z80CTC_ZC0_CB(WRITELINE(*this, nanos_state, ctc_z0_w)) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, nanos_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, nanos_state, ctc_z2_w)) - MCFG_DEVICE_ADD("z80ctc_1", Z80CTC, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_ctc_1, Z80CTC, XTAL(4'000'000)) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_Z80CTC_ZC0_CB(WRITELINE(*this, nanos_state, ctc_z0_w)) MCFG_Z80CTC_ZC1_CB(WRITELINE(*this, nanos_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(*this, nanos_state, ctc_z2_w)) - MCFG_DEVICE_ADD("z80pio_0", Z80PIO, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_pio_0, Z80PIO, XTAL(4'000'000)) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_pio_1, Z80PIO, XTAL(4'000'000)) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_DEVICE_ADD("z80sio_0", Z80SIO, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_sio_0, Z80SIO, XTAL(4'000'000)) MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, nanos_state, z80daisy_interrupt)) - MCFG_DEVICE_ADD("z80sio_1", Z80SIO, XTAL(4'000'000)) + MCFG_DEVICE_ADD(m_sio_1, Z80SIO, XTAL(4'000'000)) MCFG_Z80SIO_OUT_INT_CB(WRITELINE(*this, nanos_state, z80daisy_interrupt)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL(4'000'000)) - MCFG_Z80PIO_IN_PA_CB(READ8(*this, nanos_state, nanos_port_a_r)) - MCFG_Z80PIO_IN_PB_CB(READ8(*this, nanos_state, nanos_port_b_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, nanos_state, nanos_port_b_w)) + MCFG_DEVICE_ADD(m_pio, Z80PIO, XTAL(4'000'000)) + MCFG_Z80PIO_IN_PA_CB(READ8(*this, nanos_state, port_a_r)) + MCFG_Z80PIO_IN_PB_CB(READ8(*this, nanos_state, port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, nanos_state, port_b_w)) /* UPD765 */ - MCFG_UPD765A_ADD("upd765", false, true) - MCFG_FLOPPY_DRIVE_ADD("upd765:0", nanos_floppies, "525hd", nanos_state::floppy_formats) + MCFG_UPD765A_ADD(m_fdc, false, true) + MCFG_FLOPPY_DRIVE_ADD(m_floppy, nanos_floppies, "525hd", nanos_state::floppy_formats) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) |