mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
bbcm: Added Solidisk PC-Plus co-processor. [Nigel Barnes, Centre for Computing History]
This commit is contained in:
parent
c582fc2026
commit
98997ad1ba
@ -110,17 +110,18 @@ void bbc_tube_devices(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
|
||||
device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
|
||||
device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
|
||||
//device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
|
||||
device.option_add("casper", BBC_TUBE_CASPER); /* Casper 68000 2nd Processor */
|
||||
//device.option_add("pmsb2p", BBC_TUBE_PMSB2P); /* PMS B2P-6502 */
|
||||
//device.option_add("hdp68k", BBC_TUBE_HDP68K); /* Torch Unicorn (HDP68K) */
|
||||
device.option_add("pcplus", BBC_TUBE_PCPLUS); /* Solidisk PC-Plus co-processor */
|
||||
//device.option_add("x25", BBC_TUBE_X25); /* Econet X25 Gateway */
|
||||
device.option_add("zep100", BBC_TUBE_ZEP100); /* Torch Z80 Communicator (ZEP100) (Torch) */
|
||||
//device.option_add("zep100l", BBC_TUBE_ZEP100L); /* Torch Z80 Communicator (ZEP100) (Model B) */
|
||||
//device.option_add("zep100w", BBC_TUBE_ZEP100W); /* Torch Z80 Communicator (ZEP100) (Model B+) */
|
||||
|
||||
/* Acorn ANC21 Universal 2nd Processor Unit */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
@ -137,12 +138,14 @@ void bbc_extube_devices(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("6502", BBC_TUBE_6502); /* Acorn ANC01 6502 2nd processor */
|
||||
device.option_add("z80", BBC_TUBE_Z80); /* Acorn ANC04 Z80 2nd processor */
|
||||
device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("32016", BBC_TUBE_32016); /* Acorn ANC05 32016 2nd processor */
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("80286", BBC_TUBE_80286); /* Acorn 80286 2nd Processor */
|
||||
device.option_add("pcplus", BBC_TUBE_PCPLUS); /* Solidisk PC-Plus co-processor */
|
||||
//device.option_add("a500", BBC_TUBE_A500); /* Acorn A500 2nd Processor */
|
||||
//device.option_add("pmsb2p", BBC_TUBE_PMSB2P); /* PMS B2P-6502 */
|
||||
//device.option_add("zep100m", BBC_TUBE_ZEP100M); /* Torch Z80 Communicator (ZEP100) (Master) */
|
||||
|
||||
/* Acorn ANC21 Universal 2nd Processor Unit */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
@ -177,6 +180,7 @@ void electron_tube_devices(device_slot_interface &device)
|
||||
device.option_add("arm", BBC_TUBE_ARM); /* Acorn ANC13 ARM Evaluation System */
|
||||
device.option_add("65c102", BBC_TUBE_65C102); /* Acorn ADC06 65C102 co-processor */
|
||||
device.option_add("80186", BBC_TUBE_80186); /* Acorn ADC08 80186 co-processor */
|
||||
device.option_add("pcplus", BBC_TUBE_PCPLUS); /* Solidisk PC-Plus co-processor */
|
||||
device.option_add("rc6502", BBC_TUBE_RC6502); /* ReCo6502 (6502) */
|
||||
device.option_add("rc65816", BBC_TUBE_RC65816); /* ReCo6502 (65816) */
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_TUBE_80186, bbc_tube_80186_device, "bbc_tube_80186", "Acorn 80186 Co-Processor")
|
||||
DEFINE_DEVICE_TYPE(BBC_TUBE_PCPLUS, bbc_tube_pcplus_device, "bbc_tube_pcplus", "Solidisk PC-Plus Co-Processor")
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -49,6 +50,16 @@ ROM_START( tube_80186 )
|
||||
ROM_LOAD16_BYTE("m512_hi_ic32.rom", 0x0001, 0x2000, CRC(e47f10b2) SHA1(45dc8d7e7936afbec6de423569d9005a1c350316)) // 2201,288-02
|
||||
ROM_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( tube_pcplus )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( tube_pcplus )
|
||||
ROM_REGION(0x4000, "bootstrap", 0)
|
||||
ROM_LOAD16_BYTE("pcplus_ic31.rom", 0x0000, 0x2000, CRC(5149417b) SHA1(a905c8570d70597bb2b2fca47a1a47783956af9c))
|
||||
ROM_LOAD16_BYTE("pcplus_ic32.rom", 0x0001, 0x2000, CRC(e47f10b2) SHA1(45dc8d7e7936afbec6de423569d9005a1c350316))
|
||||
ROM_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
@ -72,6 +83,14 @@ void bbc_tube_80186_device::device_add_mconfig(machine_config &config)
|
||||
SOFTWARE_LIST(config, "flop_ls_80186").set_original("bbc_flop_80186");
|
||||
}
|
||||
|
||||
void bbc_tube_pcplus_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
bbc_tube_80186_device::device_add_mconfig(config);
|
||||
|
||||
/* internal ram */
|
||||
m_ram->set_default_size("1M");
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
@ -81,6 +100,11 @@ const tiny_rom_entry *bbc_tube_80186_device::device_rom_region() const
|
||||
return ROM_NAME( tube_80186 );
|
||||
}
|
||||
|
||||
const tiny_rom_entry *bbc_tube_pcplus_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( tube_pcplus );
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
@ -89,13 +113,23 @@ const tiny_rom_entry *bbc_tube_80186_device::device_rom_region() const
|
||||
// bbc_tube_80186_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_tube_80186_device::bbc_tube_80186_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, device_bbc_tube_interface(mconfig, *this)
|
||||
, m_i80186(*this, "i80186")
|
||||
, m_ula(*this, "ula")
|
||||
, m_ram(*this, "ram")
|
||||
, m_bootstrap(*this, "bootstrap")
|
||||
{
|
||||
}
|
||||
|
||||
bbc_tube_80186_device::bbc_tube_80186_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_TUBE_80186, tag, owner, clock),
|
||||
device_bbc_tube_interface(mconfig, *this),
|
||||
m_i80186(*this, "i80186"),
|
||||
m_ula(*this, "ula"),
|
||||
m_ram(*this, "ram"),
|
||||
m_bootstrap(*this, "bootstrap")
|
||||
: bbc_tube_80186_device(mconfig, BBC_TUBE_80186, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
bbc_tube_pcplus_device::bbc_tube_pcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: bbc_tube_80186_device(mconfig, BBC_TUBE_PCPLUS, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
@ -121,6 +155,13 @@ void bbc_tube_80186_device::device_reset()
|
||||
program.install_rom(0xc0000, 0xc3fff, 0x3c000, m_bootstrap->base());
|
||||
}
|
||||
|
||||
void bbc_tube_pcplus_device::device_reset()
|
||||
{
|
||||
address_space &program = m_i80186->space(AS_PROGRAM);
|
||||
|
||||
program.install_ram(0x00000, 0xfffff, m_ram->pointer());
|
||||
program.install_rom(0xf0000, 0xf3fff, 0x0c000, m_bootstrap->base());
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// IMPLEMENTATION
|
||||
|
@ -32,6 +32,8 @@ public:
|
||||
bbc_tube_80186_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
bbc_tube_80186_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
@ -43,7 +45,6 @@ protected:
|
||||
virtual uint8_t host_r(offs_t offset) override;
|
||||
virtual void host_w(offs_t offset, uint8_t data) override;
|
||||
|
||||
private:
|
||||
required_device<i80186_cpu_device> m_i80186;
|
||||
required_device<tube_device> m_ula;
|
||||
required_device<ram_device> m_ram;
|
||||
@ -54,8 +55,24 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class bbc_tube_pcplus_device : public bbc_tube_80186_device
|
||||
{
|
||||
public:
|
||||
bbc_tube_pcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_reset() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_TUBE_80186, bbc_tube_80186_device)
|
||||
DECLARE_DEVICE_TYPE(BBC_TUBE_PCPLUS, bbc_tube_pcplus_device)
|
||||
|
||||
|
||||
#endif /* MAME_BUS_BBC_TUBE_80x86_H */
|
||||
#endif /* MAME_BUS_BBC_TUBE_80186_H */
|
||||
|
Loading…
Reference in New Issue
Block a user