diff options
Diffstat (limited to 'src/mame/drivers/lbpc.cpp')
-rw-r--r-- | src/mame/drivers/lbpc.cpp | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/src/mame/drivers/lbpc.cpp b/src/mame/drivers/lbpc.cpp deleted file mode 100644 index 3daf9b9fd95..00000000000 --- a/src/mame/drivers/lbpc.cpp +++ /dev/null @@ -1,208 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/**************************************************************************** - - Skeleton driver for Ampro Little Board/PC. - - This is unusual among PC/XT-compatible machines in that many standard - peripheral functions, including the interrupt and refresh controllers, - are integrated into the V40 CPU itself, with some software assistance - to compensate for DMAC incompatibilities. Two Vadem SDIP64 ASICs and a - standard FDC and UART provide most other PC-like hardware features. The - BIOS also supports the onboard SCSI controller. - -****************************************************************************/ - -#include "emu.h" -#include "bus/isa/isa.h" -#include "bus/isa/isa_cards.h" -#include "bus/nscsi/devices.h" -#include "bus/rs232/rs232.h" -#include "cpu/nec/v5x.h" -#include "machine/ins8250.h" -#include "machine/ncr5380n.h" -#include "machine/upd765.h" -#include "sound/spkrdev.h" -#include "speaker.h" - -class lbpc_state : public driver_device -{ -public: - lbpc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_expbus(*this, "expbus") - , m_speaker(*this, "speaker") - , m_port61(0xff) - , m_speaker_data(false) - { - } - - void lbpc(machine_config &config); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - -private: - u8 exp_dack1_r(); - void exp_dack1_w(u8 data); - DECLARE_WRITE_LINE_MEMBER(iochck_w); - u8 port61_r(); - void port61_w(u8 data); - DECLARE_WRITE_LINE_MEMBER(out2_w); - - void mem_map(address_map &map); - void io_map(address_map &map); - - required_device<v40_device> m_maincpu; - required_device<isa8_device> m_expbus; - required_device<speaker_sound_device> m_speaker; - - u8 m_port61; - bool m_speaker_data; -}; - - -void lbpc_state::machine_start() -{ - save_item(NAME(m_port61)); - save_item(NAME(m_speaker_data)); -} - -void lbpc_state::machine_reset() -{ - port61_w(0); -} - - -u8 lbpc_state::exp_dack1_r() -{ - return m_expbus->dack_r(0); -} - -void lbpc_state::exp_dack1_w(u8 data) -{ - m_expbus->dack_w(0, data); -} - -WRITE_LINE_MEMBER(lbpc_state::iochck_w) -{ - // TODO -} - -u8 lbpc_state::port61_r() -{ - return m_port61; -} - -void lbpc_state::port61_w(u8 data) -{ - if (BIT(m_port61, 1) && !BIT(data, 1)) - m_speaker->level_w(0); - else if (!BIT(m_port61, 1) && BIT(data, 1)) - m_speaker->level_w(m_speaker_data); - m_maincpu->tctl2_w(BIT(data, 0)); - - m_port61 = data; -} - -WRITE_LINE_MEMBER(lbpc_state::out2_w) -{ - m_speaker_data = state; - if (BIT(m_port61, 1)) - m_speaker->level_w(state); -} - -void lbpc_state::mem_map(address_map &map) -{ - map(0x00000, 0x9ffff).ram(); // 256K, 512K or 768K DRAM - // 0xE0000–0xEFFFF: empty socket - // 0xF0000-0xF7FFF: empty socket - map(0xf8000, 0xfffff).rom().region("bios", 0); -} - -void lbpc_state::io_map(address_map &map) -{ - map(0x0061, 0x0061).rw(FUNC(lbpc_state::port61_r), FUNC(lbpc_state::port61_w)); - map(0x0330, 0x0337).rw("scsi:7:ncr", FUNC(ncr53c80_device::read), FUNC(ncr53c80_device::write)); - map(0x0370, 0x0377).m("fdc", FUNC(wd37c65c_device::map)); - map(0x03f8, 0x03ff).rw("com", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); -} - - -static INPUT_PORTS_START(lbpc) -INPUT_PORTS_END - - -void lbpc_state::lbpc(machine_config &config) -{ - V40(config, m_maincpu, 14.318181_MHz_XTAL); // 7.16 MHz operating frequency - m_maincpu->set_addrmap(AS_PROGRAM, &lbpc_state::mem_map); - m_maincpu->set_addrmap(AS_IO, &lbpc_state::io_map); - m_maincpu->set_tclk(14.318181_MHz_XTAL / 12); // generated by ASIC1 - m_maincpu->out_handler<2>().set(FUNC(lbpc_state::out2_w)); - m_maincpu->out_hreq_cb().set_inputline(m_maincpu, INPUT_LINE_HALT); - m_maincpu->out_hreq_cb().append(m_maincpu, FUNC(v40_device::hack_w)); - m_maincpu->in_memr_cb().set([this] (offs_t offset) { return m_maincpu->space(AS_PROGRAM).read_byte(offset); }); - m_maincpu->out_memw_cb().set([this] (offs_t offset, u8 data) { m_maincpu->space(AS_PROGRAM).write_byte(offset, data); }); - m_maincpu->in_ior_cb<0>().set(FUNC(lbpc_state::exp_dack1_r)); - m_maincpu->out_iow_cb<0>().set(FUNC(lbpc_state::exp_dack1_w)); - m_maincpu->in_ior_cb<1>().set("fdc", FUNC(wd37c65c_device::dma_r)); - m_maincpu->out_iow_cb<1>().set("fdc", FUNC(wd37c65c_device::dma_w)); - m_maincpu->in_ior_cb<2>().set("scsi:7:ncr", FUNC(ncr53c80_device::dma_r)); - m_maincpu->out_iow_cb<2>().set("scsi:7:ncr", FUNC(ncr53c80_device::dma_w)); - - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.5); - - ins8250_device &com(INS8250(config, "com", 1.8432_MHz_XTAL)); // NS8250AV - com.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ4); - com.out_rts_callback().set("serial", FUNC(rs232_port_device::write_rts)); // J3 pin 4 - com.out_tx_callback().set("serial", FUNC(rs232_port_device::write_txd)); // J3 pin 5 - com.out_dtr_callback().set("serial", FUNC(rs232_port_device::write_dtr)); // J3 pin 7 - - wd37c65c_device &fdc(WD37C65C(config, "fdc", 16_MHz_XTAL, 9.6_MHz_XTAL)); // WD37C65BJM - fdc.intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ6); - fdc.drq_wr_callback().set(m_maincpu, FUNC(v40_device::dreq_w<1>)); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", default_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr", NCR53C80).machine_config([this] (device_t *device) { - downcast<ncr5380n_device &>(*device).drq_handler().set(m_maincpu, FUNC(v40_device::dreq_w<2>)); - }); - - rs232_port_device &serial(RS232_PORT(config, "serial", default_rs232_devices, nullptr)); - serial.dcd_handler().set("com", FUNC(ins8250_device::dcd_w)); // J3 pin 1 - serial.dsr_handler().set("com", FUNC(ins8250_device::dsr_w)); // J3 pin 2 - serial.rxd_handler().set("com", FUNC(ins8250_device::rx_w)); // J3 pin 3 - serial.cts_handler().set("com", FUNC(ins8250_device::cts_w)); // J3 pin 6 - serial.ri_handler().set("com", FUNC(ins8250_device::ri_w)); // J3 pin 8 - - ISA8(config, m_expbus, 14.318181_MHz_XTAL / 2); - m_expbus->set_memspace(m_maincpu, AS_PROGRAM); - m_expbus->set_iospace(m_maincpu, AS_IO); - m_expbus->drq1_callback().set(m_maincpu, FUNC(v40_device::dreq_w<0>)); - m_expbus->irq2_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ2); - m_expbus->irq3_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ3); - m_expbus->irq5_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ5); - m_expbus->iochck_callback().set(FUNC(lbpc_state::iochck_w)); - - ISA8_SLOT(config, "exp", 0, m_expbus, pc_isa8_cards, "ega", false); -} - - -ROM_START(lbpc) - ROM_REGION(0x8000, "bios", 0) - // "Firmware Version 1.0H 03/08/89" - ROM_LOAD("lbpc-bio.rom", 0x0000, 0x8000, CRC(47bddf8b) SHA1(8a04fe34502f9f3bfe1e233762bbd5bbdd1c455d)) -ROM_END - - -COMP(1989, lbpc, 0, 0, lbpc, lbpc, lbpc_state, empty_init, "Ampro Computers", "Little Board/PC", MACHINE_NOT_WORKING) |