summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/bbc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/bbc.cpp')
-rw-r--r--src/mame/drivers/bbc.cpp223
1 files changed, 170 insertions, 53 deletions
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index 1abca73322e..edf06c85b54 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -22,6 +22,10 @@
ANB54 - BBC Model B+ 64K with Disc and Econet interfaces
ANB55 - BBC Model B+ 128K with Disc interface
+ Econet
+
+ AEH25 - Econet X25 Gateway
+
BBC Master
AMB15 - Master 128
@@ -290,6 +294,7 @@ ADDRESS_MAP_END
INPUT_CHANGED_MEMBER(bbc_state::trigger_reset)
{
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
+
if (newval)
{
if (m_via6522_1) m_via6522_1->reset();
@@ -430,7 +435,7 @@ static INPUT_PORTS_START(bbc_keypad)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad DELETE") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad DELETE")
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
@@ -440,8 +445,8 @@ static INPUT_PORTS_START(bbc_keypad)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad RETURN") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_STOP) PORT_CHAR(UCHAR_MAMEKEY(STOP))
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(UCHAR_MAMEKEY(COMMA))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
INPUT_PORTS_END
@@ -473,7 +478,7 @@ static INPUT_PORTS_START(torch_keyboard)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad DELETE") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad DELETE")
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
@@ -483,8 +488,8 @@ static INPUT_PORTS_START(torch_keyboard)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad RETURN") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_STOP) PORT_CHAR(UCHAR_MAMEKEY(STOP))
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(UCHAR_MAMEKEY(COMMA))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
INPUT_PORTS_END
@@ -753,9 +758,8 @@ INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(bbc_state::bbcb_vsync)
{
- via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
- via_0->write_ca1(1);
- via_0->write_ca1(0);
+ m_via6522_0->write_ca1(1);
+ m_via6522_0->write_ca1(0);
}
@@ -811,21 +815,21 @@ WRITE_LINE_MEMBER(bbc_state::econet_clk_w)
// 4 x EPROM sockets (16K) in BBC-A, these should grow to 16 for BBC-B and later...
static MACHINE_CONFIG_START( bbc_eprom_sockets )
-MCFG_GENERIC_SOCKET_ADD("exp_rom1", generic_linear_slot, "bbc_cart")
-MCFG_GENERIC_EXTENSIONS("bin,rom")
-MCFG_GENERIC_LOAD(bbc_state, exp1_load)
+ MCFG_GENERIC_SOCKET_ADD("exp_rom1", generic_linear_slot, "bbc_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(bbc_state, exp1_load)
-MCFG_GENERIC_SOCKET_ADD("exp_rom2", generic_linear_slot, "bbc_cart")
-MCFG_GENERIC_EXTENSIONS("bin,rom")
-MCFG_GENERIC_LOAD(bbc_state, exp2_load)
+ MCFG_GENERIC_SOCKET_ADD("exp_rom2", generic_linear_slot, "bbc_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(bbc_state, exp2_load)
-MCFG_GENERIC_SOCKET_ADD("exp_rom3", generic_linear_slot, "bbc_cart")
-MCFG_GENERIC_EXTENSIONS("bin,rom")
-MCFG_GENERIC_LOAD(bbc_state, exp3_load)
+ MCFG_GENERIC_SOCKET_ADD("exp_rom3", generic_linear_slot, "bbc_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(bbc_state, exp3_load)
-MCFG_GENERIC_SOCKET_ADD("exp_rom4", generic_linear_slot, "bbc_cart")
-MCFG_GENERIC_EXTENSIONS("bin,rom")
-MCFG_GENERIC_LOAD(bbc_state, exp4_load)
+ MCFG_GENERIC_SOCKET_ADD("exp_rom4", generic_linear_slot, "bbc_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_LOAD(bbc_state, exp4_load)
MACHINE_CONFIG_END
@@ -858,7 +862,7 @@ static MACHINE_CONFIG_START( bbca )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- //MCFG_SCREEN_RAW_PARAMS( XTAL_17_73447MHz / 4, 1024, 5*16, 1024 - 3*16, 625, 12, 625 - 13 )
+ //MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 1024, 0, 640, 312, 0, 256)
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
@@ -872,7 +876,7 @@ static MACHINE_CONFIG_START( bbca )
MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
/* crtc */
- MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000)
+ MCFG_MC6845_ADD("hd6845", HD6845, "screen", XTAL_16MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(12)
MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
@@ -976,12 +980,18 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_ECONET_DATA_CALLBACK(DEVWRITELINE("mc6854", mc6854_device, set_rx))
MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
- /* expansion ports */
+ /* analogue port */
MCFG_BBC_ANALOGUE_SLOT_ADD("analogue", bbc_analogue_devices, "acornjoy")
+
+ /* 1mhz bus port */
MCFG_BBC_1MHZBUS_SLOT_ADD("1mhzbus", bbcb_1mhzbus_devices, nullptr)
MCFG_BBC_1MHZBUS_SLOT_IRQ_HANDLER(DEVWRITELINE("irqs", input_merger_device, in_w<3>))
MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(WRITELINE(bbc_state, bus_nmi_w))
+
+ /* tube port */
MCFG_BBC_TUBE_SLOT_ADD("tube", bbc_tube_ext_devices, nullptr)
+
+ /* user port */
MCFG_BBC_USERPORT_SLOT_ADD("userport", bbc_userport_devices, nullptr)
/* software lists */
@@ -1094,9 +1104,9 @@ static MACHINE_CONFIG_DERIVED( torchf, bbcb )
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, fdc_intrq_w))
MCFG_I8271_HDL_CALLBACK(WRITELINE(bbc_state, motor_w))
MCFG_I8271_OPT_CALLBACK(WRITELINE(bbc_state, side_w))
- MCFG_FLOPPY_DRIVE_ADD("i8271:0", bbc_floppies_525, "525qd", bbc_state::floppy_formats_bbc)
+ MCFG_FLOPPY_DRIVE_ADD_FIXED("i8271:0", bbc_floppies_525, "525qd", bbc_state::floppy_formats_bbc)
MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "525qd", bbc_state::floppy_formats_bbc)
+ MCFG_FLOPPY_DRIVE_ADD_FIXED("i8271:1", bbc_floppies_525, "525qd", bbc_state::floppy_formats_bbc)
MCFG_FLOPPY_DRIVE_SOUND(true)
/* Add Torch Z80 Communicator co-processor */
@@ -1141,7 +1151,7 @@ static MACHINE_CONFIG_DERIVED( abc110, bbcbp )
/* Add Z80 co-processor */
//MCFG_DEVICE_MODIFY("tube")
- //MCFG_SLOT_DEFAULT_OPTION("z80copro")
+ //MCFG_SLOT_DEFAULT_OPTION("z80")
//MCFG_SLOT_FIXED(true)
/* Add ADAPTEC ACB-4000 Winchester Disc Controller */
@@ -1176,7 +1186,7 @@ static MACHINE_CONFIG_DERIVED( acw443, bbcbp )
/* Add 32016 co-processor */
//MCFG_DEVICE_MODIFY("tube")
- //MCFG_SLOT_DEFAULT_OPTION("32016copro")
+ //MCFG_SLOT_DEFAULT_OPTION("32016")
//MCFG_SLOT_FIXED(true)
/* Add ADAPTEC ACB-4000 Winchester Disc Controller */
@@ -1202,7 +1212,7 @@ static MACHINE_CONFIG_DERIVED( abc310, bbcbp )
/* Add 80286 co-processor */
//MCFG_DEVICE_MODIFY("tube")
- //MCFG_SLOT_DEFAULT_OPTION("80286copro")
+ //MCFG_SLOT_DEFAULT_OPTION("80286")
//MCFG_SLOT_FIXED(true)
/* Add ADAPTEC ACB-4000 Winchester Disc Controller */
@@ -1257,13 +1267,39 @@ static MACHINE_CONFIG_DERIVED( reutapm, bbcbp )
/* expansion ports */
MCFG_DEVICE_REMOVE("analogue")
MCFG_DEVICE_REMOVE("1mhzbus")
- MCFG_DEVICE_REMOVE("tube")
MCFG_DEVICE_REMOVE("userport")
MACHINE_CONFIG_END
/***************************************************************************
+ Econet X25 Gateway
+
+****************************************************************************/
+
+
+static MACHINE_CONFIG_DERIVED( econx25, bbcbp )
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("vsm")
+ MCFG_DEVICE_REMOVE("tms5220")
+
+ /* fdc */
+ //MCFG_DEVICE_REMOVE("wd1770")
+
+ /* Add Econet X25 Gateway co-processor */
+ //MCFG_DEVICE_MODIFY("tube")
+ //MCFG_DEVICE_SLOT_INTERFACE(bbc_x25tube_devices, "x25", true)
+
+ /* software lists */
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
BBC Master Series
****************************************************************************/
@@ -1299,13 +1335,13 @@ static MACHINE_CONFIG_START( bbcm )
MCFG_SCREEN_UPDATE_DEVICE("hd6845", hd6845_device, screen_update)
MCFG_PALETTE_ADD("palette", 16)
- MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
+ MCFG_PALETTE_INIT_OWNER(bbc_state, bbc)
- MCFG_DEVICE_ADD("saa5050", SAA5050, XTAL_12MHz/2)
+ MCFG_DEVICE_ADD("saa5050", SAA5050, XTAL_12MHz / 2)
MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
/* crtc */
- MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000)
+ MCFG_MC6845_ADD("hd6845", HD6845, "screen", XTAL_16MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(12)
MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
@@ -1407,32 +1443,38 @@ static MACHINE_CONFIG_START( bbcm )
MCFG_ECONET_DATA_CALLBACK(DEVWRITELINE("mc6854", mc6854_device, set_rx))
MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
- /* expansion ports */
+ /* analogue port */
MCFG_BBC_ANALOGUE_SLOT_ADD("analogue", bbc_analogue_devices, "acornjoy")
+
+ /* 1mhz bus port */
MCFG_BBC_1MHZBUS_SLOT_ADD("1mhzbus", bbcm_1mhzbus_devices, nullptr)
+ MCFG_BBC_1MHZBUS_SLOT_IRQ_HANDLER(DEVWRITELINE("irqs", input_merger_device, in_w<3>))
+ MCFG_BBC_1MHZBUS_SLOT_NMI_HANDLER(WRITELINE(bbc_state, bus_nmi_w))
+
+ /* tube ports */
MCFG_BBC_TUBE_SLOT_ADD("tube_ext", bbc_tube_ext_devices, nullptr)
MCFG_BBC_TUBE_SLOT_ADD("tube_int", bbc_tube_int_devices, nullptr)
+
+ /* user port */
MCFG_BBC_USERPORT_SLOT_ADD("userport", bbc_userport_devices, nullptr)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbcmt, bbcm )
-
/* Add 65C102 co-processor */
//MCFG_DEVICE_MODIFY("tube_int")
//MCFG_SLOT_DEFAULT_OPTION("65c102copro")
//MCFG_SLOT_FIXED(true)
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_65c102", "bbc_flop_65c102")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_65c102", "bbc_flop_65c102")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbcmaiv, bbcm )
-
/* Add 65C102 co-processor */
- //MCFG_DEVICE_MODIFY("tube_int")
- //MCFG_SLOT_DEFAULT_OPTION("65c102copro")
+ //MCFG_DEVICE_MODIFY("intube")
+ //MCFG_SLOT_DEFAULT_OPTION("65c102")
//MCFG_SLOT_FIXED(true)
/* Add Philips VP415 Laserdisc player */
@@ -1499,11 +1541,28 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( discmate, bbcm )
-
/* Add Sony CDK-3000PII Auto Disc Loader */
/* Add interface boards connected to cassette and RS423 */
+ /* software lists */
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( cfa3000, bbcm )
+ /* software lists */
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
MACHINE_CONFIG_END
@@ -1525,7 +1584,7 @@ static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, fdc_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, fdc_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "35dd", bbc_state::floppy_formats_bbcmc)
+ MCFG_FLOPPY_DRIVE_ADD_FIXED("wd1772:0", bbc_floppies_35, "35dd", bbc_state::floppy_formats_bbcmc)
MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, nullptr, bbc_state::floppy_formats_bbcmc)
MCFG_FLOPPY_DRIVE_SOUND(true)
@@ -1945,6 +2004,37 @@ ROM_START(reutapm)
ROM_END
+ROM_START(econx25)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000, "option", 0) /* ROM */
+ ROM_LOAD("0246,201_01_x25os.rom", 0x40000, 0x4000, CRC(8b652337) SHA1(6a5c7ace255c8ac96c983d5ba67084fbd71ff61e))
+ /* rom page 0 00000 */
+ /* rom page 1 04000 IC71 selectable with link S13 */
+ /* rom page 2 08000 IC35 32K IN PAGE 3 */
+ /* rom page 3 0c000 IC35 SPARE SOCKET */
+ /* rom page 4 10000 IC44 32K IN PAGE 5 */
+ /* rom page 5 14000 IC44 SPARE SOCKET */
+ /* rom page 6 18000 IC57 32K IN PAGE 7 */
+ /* rom page 7 1c000 IC57 ANFS */
+ /* rom page 8 20000 IC62 BASIC */
+ /* rom page 9 24000 IC62 Unused OS */
+ /* rom page 10 28000 IC68 32K IN PAGE 11 */
+ /* rom page 11 2c000 IC68 SPARE SOCKET */
+ /* rom page 12 30000 */
+ /* rom page 13 34000 */
+ /* rom page 14 38000 */
+ /* rom page 15 3C000 IC71 selectable with link S13 */
+ ROM_LOAD("2201,248_03_anfs.rom", 0x1c000, 0x4000, CRC(744a60a7) SHA1(c733b108d74cf3b1c5de395335236800a7c9c0d8))
+ ROM_LOAD("0201,241_01_bpos2.rom", 0x20000, 0x8000, CRC(9f356396) SHA1(ea7d3a7e3ee1ecfaa1483af994048057362b01f2))
+ /* X25 TSI is in IC37 which is supposed to take a speech PHROM, so not sure where this is mapped */
+ ROM_LOAD("0246,215_02_x25tsi_v0.51.rom", 0x30000, 0x8000, CRC(71dd84e4) SHA1(bbfa892fdcc6f753dda5134ecb97cc7c42b959c2))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+ROM_END
+
+
ROM_START(bbcm)
ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
@@ -2126,10 +2216,6 @@ ROM_START(bbcmc)
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
-
-// ROM_REGION(0x80,"mc146818",0) /* mc146818 */
- /* Factory defaulted CMOS RAM, sets default language ROM, etc. */
-// ROM_LOAD("mos500.cmos", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
ROM_END
@@ -2163,10 +2249,6 @@ ROM_START(bbcmc_ar)
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
-
-// ROM_REGION(0x80,"mc146818",0) /* mc146818 */
- /* Factory defaulted CMOS RAM, sets default language ROM, etc. */
-// ROM_LOAD("mos500.cmos", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
ROM_END
@@ -2198,10 +2280,6 @@ ROM_START(pro128s)
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
-
- // ROM_REGION(0x80,"eeprom",0) /* pcd8572 */
- /* Factory defaulted EEPROM, sets default language ROM, etc. */
- // ROM_LOAD("mos510o.epr", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
ROM_END
@@ -2241,6 +2319,42 @@ ROM_START(discmate)
ROM_END
+ROM_START(cfa3000)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000, "option", 0) /* ROM */
+ ROM_LOAD("CFA3000_3_4_Iss10.3.ic41", 0x10000, 0x08000, CRC(ecb385ab) SHA1(eafa9b34cb1cf63790f74332bb7d85ee356b6973))
+ ROM_LOAD("CFA3000_SM_Iss10.3.ic37", 0x18000, 0x08000, CRC(c07aee5f) SHA1(1994e3755dc15d1ea7e105bc19cd57893b719779))
+ ROM_LOAD("Acorn_MOS_(Tinsley_64K)_Iss10.3.ic24", 0x30000, 0x10000, CRC(4413c3ee) SHA1(76d0462b4dabe2461010fce2341570ff3d606d54))
+ //ROM_COPY("option", 0x20000, 0x30000, 0x10000) /* Mirror MOS */
+ ROM_COPY("option", 0x30000, 0x40000, 0x04000) /* Move loaded roms into place */
+ ROM_FILL(0x30000, 0x4000, 0xFFFF)
+ /* 00000 rom 0 SK3 Rear Cartridge bottom 16K */
+ /* 04000 rom 1 SK3 Rear Cartridge top 16K */
+ /* 08000 rom 2 SK4 Front Cartridge bottom 16K */
+ /* 0c000 rom 3 SK4 Front Cartridge top 16K */
+ /* 10000 rom 4 IC41 SWRAM or bottom 16K */
+ /* 14000 rom 5 IC41 SWRAM or top 16K */
+ /* 18000 rom 6 IC37 SWRAM or bottom 16K */
+ /* 1c000 rom 7 IC37 SWRAM or top 16K */
+ /* 20000 rom 8 IC27 ANFS */
+ /* 24000 rom 9 IC24 DFS + SRAM */
+ /* 28000 rom 10 IC24 Viewsheet */
+ /* 2c000 rom 11 IC24 Edit */
+ /* 30000 rom 12 IC24 BASIC */
+ /* 34000 rom 13 IC24 ADFS */
+ /* 38000 rom 14 IC24 View + MOS code */
+ /* 3c000 rom 15 IC24 Terminal + Tube host + CFS */
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x40, "rtc", 0) /* mc146818 */
+ /* Factory defaulted CMOS RAM, sets default language ROM, etc. */
+ ROM_LOAD("mos350.cmos", 0x00, 0x40, CRC(e84c1854) SHA1(f3cb7f12b7432caba28d067f01af575779220aac))
+ROM_END
+
+
#define rom_ltmpbp rom_bbcbp
#define rom_ltmpm rom_bbcm
@@ -2260,6 +2374,7 @@ COMP ( 1985, acw443, bbcbp, 0, acw443, abc, bbc_state, bbc,
COMP ( 1985, abc310, bbcbp, 0, abc310, abc, bbc_state, bbc, "Acorn", "ABC 310", MACHINE_NOT_WORKING)
COMP ( 1985, ltmpbp, bbcbp, 0, ltmpbp, ltmpbp, bbc_state, bbc, "Lawrie T&M Ltd.", "LTM Portable (B+)", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1985, reutapm, bbcbp, 0, reutapm, bbcb, bbc_state, bbc, "Acorn", "Reuters APM", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING)
+COMP ( 1986, econx25, bbcbp, 0, econx25, bbcbp, bbc_state, bbc, "Acorn", "Econet X25 Gateway", MACHINE_NOT_WORKING)
COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbc, "Acorn", "BBC Master 128", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbc, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbc, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
@@ -2272,3 +2387,5 @@ COMP ( 1986, bbcmc_ar, bbcmc, 0, bbcmc, bbcm, bbc_state, bbc,
COMP ( 1987, pro128s, bbcmc, 0, pro128s, bbcm, bbc_state, bbc, "Olivetti", "Prodest PC 128S", MACHINE_IMPERFECT_GRAPHICS)
//COMP ( 1988, discmon, bbcm, 0, discmon, bbcm, bbc_state, bbc, "Arbiter Leisure", "Arbiter Discmonitor A-01", MACHINE_NOT_WORKING)
COMP ( 1988, discmate, bbcm, 0, discmate, bbcm, bbc_state, bbc, "Arbiter Leisure", "Arbiter Discmate A-02", MACHINE_NOT_WORKING)
+//COMP ( 1988, discmast, bbcm, 0, discmast, bbcm, bbc_state, bbc, "Arbiter Leisure", "Arbiter Discmaster A-03", MACHINE_NOT_WORKING)
+COMP ( 1988, cfa3000, bbcm, 0, cfa3000, bbcm, bbc_state, bbc, "Tinsley Medical Instruments", "Henson CFA 3000", MACHINE_NOT_WORKING)