New not working

------------------
Ampro Computers Little Board/186 [Carl, Al Kossow]

Out of WN
Requires "Monitor Busy" IRQs from the 5380 to read the SCSI HDD.
This commit is contained in:
cracyc 2017-03-04 19:23:09 -06:00
parent 948a031029
commit c86d1d1c9a
4 changed files with 165 additions and 0 deletions

View File

@ -881,6 +881,7 @@ function linkProjects_mame_mess(_target, _subtarget)
"altos",
"ami",
"amiga",
"ampro",
"amstrad",
"apf",
"apollo",
@ -1343,6 +1344,11 @@ files {
MAME_DIR .. "src/mame/includes/amiga.h",
}
createMESSProjects(_target, _subtarget, "ampro")
files {
MAME_DIR .. "src/mame/drivers/lb186.cpp",
}
createMESSProjects(_target, _subtarget, "amstrad")
files {
MAME_DIR .. "src/mame/drivers/amstrad.cpp",

155
src/mame/drivers/lb186.cpp Normal file
View File

@ -0,0 +1,155 @@
// license:BSD-3-Clause
// copyright-holders:Carl
#include "emu.h"
#include "cpu/i86/i186.h"
#include "machine/wd_fdc.h"
#include "machine/mc68681.h"
#include "bus/rs232/rs232.h"
#include "machine/nscsi_hd.h"
#include "machine/ncr5380n.h"
class lb186_state : public driver_device
{
public:
lb186_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_fdc(*this, "fdc"),
m_scsi(*this, "scsibus:7:ncr5380")
{}
required_device<i80186_cpu_device> m_maincpu;
required_device<wd1772_t> m_fdc;
required_device<ncr5380n_device> m_scsi;
DECLARE_WRITE8_MEMBER(sio_out_w);
DECLARE_WRITE8_MEMBER(drive_sel_w);
DECLARE_READ8_MEMBER(scsi_dack_r);
DECLARE_WRITE8_MEMBER(scsi_dack_w);
};
WRITE8_MEMBER(lb186_state::scsi_dack_w)
{
m_scsi->dma_w(data);
}
READ8_MEMBER(lb186_state::scsi_dack_r)
{
return m_scsi->dma_r();
}
WRITE8_MEMBER(lb186_state::sio_out_w)
{
if(!BIT(data, 5))
m_fdc->soft_reset();
m_maincpu->tmrin1_w(BIT(data, 3) ? ASSERT_LINE : CLEAR_LINE);
}
WRITE8_MEMBER(lb186_state::drive_sel_w)
{
m_fdc->dden_w(BIT(data, 5));
floppy_image_device *floppy;
char devname[8];
unsigned int drive = data & 0xf;
switch(drive)
{
case 0:
return;
case 1:
drive = 0;
break;
case 2:
drive = 1;
break;
case 4:
drive = 2;
break;
case 8:
drive = 3;
break;
default:
logerror("More than one drive enabled!\n");
return;
}
sprintf(devname, "%d", drive);
floppy = m_fdc->subdevice<floppy_connector>(devname)->get_device();
m_fdc->set_floppy(floppy);
floppy->ss_w(BIT(data, 6));
}
static ADDRESS_MAP_START( lb186_map, AS_PROGRAM, 16, lb186_state )
AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now
AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( lb186_io, AS_IO, 16, lb186_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x1000, 0x101f) AM_DEVREADWRITE8("sc2681", mc68681_device, read, write, 0x00ff)
AM_RANGE(0x1080, 0x108f) AM_DEVREADWRITE8("scsibus:7:ncr5380", ncr5380n_device, read, write, 0x00ff)
AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE8("fdc", wd1772_t, read, write, 0x00ff)
AM_RANGE(0x1180, 0x1181) AM_READWRITE8(scsi_dack_r, scsi_dack_w, 0x00ff)
AM_RANGE(0x1200, 0x1201) AM_WRITE8(drive_sel_w, 0x00ff)
ADDRESS_MAP_END
static SLOT_INTERFACE_START( lb186_floppies )
SLOT_INTERFACE("525dd", FLOPPY_525_DD)
SLOT_INTERFACE("35dd", FLOPPY_35_DD)
SLOT_INTERFACE_END
static MACHINE_CONFIG_FRAGMENT( ncr5380 )
MCFG_DEVICE_CLOCK(10000000)
MCFG_NCR5380N_IRQ_HANDLER(DEVWRITELINE(":maincpu", i80186_cpu_device, int1_w))
MCFG_NCR5380N_DRQ_HANDLER(DEVWRITELINE(":maincpu", i80186_cpu_device, drq0_w))
MACHINE_CONFIG_END
static SLOT_INTERFACE_START( scsi_devices )
SLOT_INTERFACE("harddisk", NSCSI_HARDDISK)
SLOT_INTERFACE_INTERNAL("ncr5380", NCR5380N)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( lb186, lb186_state )
MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2)
MCFG_CPU_PROGRAM_MAP(lb186_map)
MCFG_CPU_IO_MAP(lb186_io)
MCFG_MC68681_ADD("sc2681", XTAL_3_6864MHz)
MCFG_MC68681_IRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, int0_w))
MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("rs232_1", rs232_port_device, write_txd))
MCFG_MC68681_B_TX_CALLBACK(DEVWRITELINE("rs232_2", rs232_port_device, write_txd))
MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(lb186_state, sio_out_w))
MCFG_RS232_PORT_ADD("rs232_1", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sc2681", mc68681_device, rx_a_w))
MCFG_RS232_PORT_ADD("rs232_2", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sc2681", mc68681_device, rx_b_w))
MCFG_WD1772_ADD("fdc", XTAL_16MHz/2)
MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, int2_w))
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq0_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", lb186_floppies, "35dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", lb186_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:2", lb186_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:3", lb186_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_NSCSI_BUS_ADD("scsibus")
MCFG_NSCSI_ADD("scsibus:0", scsi_devices, "harddisk", false)
MCFG_NSCSI_ADD("scsibus:1", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:2", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:3", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:4", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:5", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:6", scsi_devices, nullptr, false)
MCFG_NSCSI_ADD("scsibus:7", scsi_devices, "ncr5380", true)
MCFG_DEVICE_CARD_MACHINE_CONFIG("ncr5380", ncr5380)
MACHINE_CONFIG_END
ROM_START( lb186 )
ROM_REGION(0x4000, "bios", 0)
ROM_LOAD16_BYTE("a75515_v3.35.rom", 0x0000, 0x2000, CRC(245824fb) SHA1(b39ed91d421513f5912fdbc290aaa3f1b7d4f1e0))
ROM_LOAD16_BYTE("a75516_v3.35.rom", 0x0001, 0x2000, CRC(9d9a5e22) SHA1(070be31c622f50508e8cbdb797c79978b6a4b8f6))
ROM_END
COMP( 1983, lb186, 0, 0, lb186, 0, driver_device, 0, "Ampro Computers", "Little Board/186", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )

View File

@ -17196,6 +17196,9 @@ bbonk // [1976?]
lazercmd // [1976?]
medlanes // [1977?]
@source:lb186.cpp
lb186 // Ampro Little Board/186
@source:lbeach.cpp
lbeach // (c) 1979 Olympia / Seletron

View File

@ -301,6 +301,7 @@ kramermc.cpp
kron.cpp
kyocera.cpp
laser3k.cpp
lb186.cpp
lc80.cpp
lcmate2.cpp
leapster.cpp