mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
autoc15: Added RAM disc device.
daisy: Corrected ROM SHA1 (nw)
This commit is contained in:
parent
7104687b70
commit
d4df190a68
@ -433,6 +433,8 @@ if (BUSES["BBC_EXP"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/exp.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/exp.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/autocue.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/autocue.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/mertec.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/exp/mertec.h",
|
||||
}
|
||||
|
100
src/devices/bus/bbc/exp/autocue.cpp
Normal file
100
src/devices/bus/bbc/exp/autocue.cpp
Normal file
@ -0,0 +1,100 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Autocue RAM Disc
|
||||
|
||||
The RAM is accessible through JIM (page &FD). One page is visible in JIM at a time.
|
||||
The selected page is controlled by the two paging registers:
|
||||
|
||||
&FCFE Paging register MSB
|
||||
&FCFF Paging register LSB
|
||||
|
||||
256K board has 1024 pages &000 to &3FF
|
||||
512K board has 2048 pages &000 to &7FF
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "autocue.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_AUTOCUE, bbc_autocue_device, "bbc_autocue", "Autocue RAM Disc");
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_autocue_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// bbc_autocue_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_autocue_device::bbc_autocue_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_AUTOCUE, tag, owner, clock)
|
||||
, device_bbc_exp_interface(mconfig, *this)
|
||||
, m_nvram(*this, "nvram")
|
||||
, m_ram_page(0)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_autocue_device::device_start()
|
||||
{
|
||||
/* ram disk - board with 8 x HM62256LFP-12 - 256K expandable to 512K */
|
||||
m_ram = make_unique_clear<uint8_t[]>(0x40000);
|
||||
m_nvram->set_base(m_ram.get(), 0x40000);
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
void bbc_autocue_device::fred_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0xff: m_ram_page = (m_ram_page & 0x00ff) | (data << 8); break;
|
||||
case 0xfe: m_ram_page = (m_ram_page & 0xff00) | (data << 0); break;
|
||||
}
|
||||
//logerror("Write ram_page=%04x\n", m_ram_page);
|
||||
}
|
||||
|
||||
uint8_t bbc_autocue_device::jim_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (m_ram_page < 0x400)
|
||||
{
|
||||
data = m_ram[(m_ram_page << 8) | offset];
|
||||
}
|
||||
//logerror("Read %04x -> %02x\n", offset | 0xfd00, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
void bbc_autocue_device::jim_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
//logerror("Write %04x <- %02x\n", offset | 0xfd00, data);
|
||||
if (m_ram_page < 0x400)
|
||||
{
|
||||
m_ram[(m_ram_page << 8) | offset] = data;
|
||||
}
|
||||
}
|
51
src/devices/bus/bbc/exp/autocue.h
Normal file
51
src/devices/bus/bbc/exp/autocue.h
Normal file
@ -0,0 +1,51 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Autocue RAM Disc
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#ifndef MAME_BUS_BBC_EXP_AUTOCUE_H
|
||||
#define MAME_BUS_BBC_EXP_AUTOCUE_H
|
||||
|
||||
#include "exp.h"
|
||||
#include "machine/nvram.h"
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class bbc_autocue_device :
|
||||
public device_t,
|
||||
public device_bbc_exp_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
bbc_autocue_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
virtual void fred_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t jim_r(offs_t offset) override;
|
||||
virtual void jim_w(offs_t offset, uint8_t data) override;
|
||||
|
||||
private:
|
||||
required_device<nvram_device> m_nvram;
|
||||
std::unique_ptr<uint8_t[]> m_ram;
|
||||
|
||||
uint16_t m_ram_page;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_AUTOCUE, bbc_autocue_device);
|
||||
|
||||
|
||||
#endif /* MAME_BUS_BBC_EXP_AUTOCUE_H */
|
@ -149,12 +149,12 @@ void bbc_exp_slot_device::pb_w(uint8_t data)
|
||||
|
||||
|
||||
// slot devices
|
||||
//#include "autocue.h"
|
||||
#include "autocue.h"
|
||||
#include "mertec.h"
|
||||
|
||||
|
||||
void bbc_exp_devices(device_slot_interface &device)
|
||||
{
|
||||
//device.option_add("autocue", BBC_AUTOCUE); /* Autocue RAM disk board */
|
||||
device.option_add("mertec", BBC_MERTEC); /* Mertec Compact Companion */
|
||||
device.option_add_internal("autocue", BBC_AUTOCUE); /* Autocue RAM disk board */
|
||||
device.option_add("mertec", BBC_MERTEC); /* Mertec Compact Companion */
|
||||
}
|
||||
|
@ -1796,8 +1796,8 @@ void bbcm_state::autoc15(machine_config &config)
|
||||
m_hd6845->out_vsync_callback().set(FUNC(bbc_state::bbc_vsync_changed));
|
||||
|
||||
/* Autocue RAM disc */
|
||||
//m_exp->set_default_option("autocue");
|
||||
//m_exp->set_fixed(true);
|
||||
m_exp->set_default_option("autocue");
|
||||
m_exp->set_fixed(true);
|
||||
}
|
||||
|
||||
|
||||
@ -2382,7 +2382,7 @@ ROM_START(daisy)
|
||||
/* 38000 rom 14 IC24 View + MOS code */
|
||||
/* 3c000 rom 15 IC24 Terminal + Tube host + CFS */
|
||||
ROM_LOAD("simdist_2_22-2-89_dhrfdsy.rom", 0x10000, 0x8000, CRC(8a9d9c4a) SHA1(278c5c63e06359601cdf972f55e98f5a7442a713))
|
||||
ROM_LOAD("daisy_irfdsy_vr4_5-1-89.rom", 0x18000, 0x8000, CRC(9662d779) SHA1(99234b55fde57680e4217b72ef4ccb8fc56edeff))
|
||||
ROM_LOAD("daisy_irfdsy_vr4_5-1-89.rom", 0x18000, 0x8000, CRC(9662d779) SHA1(0841c1fd34c152f3f02ace8633f1fa3f5139069e))
|
||||
ROM_LOAD("hibas03_a063.rom", 0x20000, 0x4000, CRC(6ea7affc) SHA1(99234b55fde57680e4217b72ef4ccb8fc56edeff))
|
||||
|
||||
ROM_REGION(0x4000, "mos", 0)
|
||||
|
Loading…
Reference in New Issue
Block a user