Skip to content

Commit eda6c7b

Browse files
committed
acorn/aa310.cpp: Added support for HFE floppy format to all machines.
- Added another romset for the A500.
1 parent feadfd4 commit eda6c7b

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

src/mame/acorn/aa310.cpp

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@
109109

110110
#include "bus/archimedes/econet/slot.h"
111111
#include "bus/archimedes/podule/slot.h"
112-
//#include "bus/archimedes/test/slot.h"
113112
#include "bus/centronics/ctronics.h"
114113
#include "bus/centronics/spjoy.h"
115114
#include "bus/econet/econet.h"
@@ -118,10 +117,6 @@
118117
#include "bus/nscsi/devices.h"
119118
#include "bus/rs232/rs232.h"
120119
#include "cpu/arm/arm.h"
121-
#include "formats/acorn_dsk.h"
122-
#include "formats/apd_dsk.h"
123-
#include "formats/jfd_dsk.h"
124-
#include "formats/st_dsk.h"
125120
#include "imagedev/floppy.h"
126121
#include "imagedev/harddriv.h"
127122
#include "machine/acorn_bmu.h"
@@ -144,6 +139,12 @@
144139
#include "machine/wd33c9x.h"
145140
#include "machine/z80scc.h"
146141

142+
#include "formats/acorn_dsk.h"
143+
#include "formats/apd_dsk.h"
144+
#include "formats/hxchfe_dsk.h"
145+
#include "formats/jfd_dsk.h"
146+
#include "formats/st_dsk.h"
147+
147148
#include "screen.h"
148149
#include "softlist.h"
149150
#include "speaker.h"
@@ -253,7 +254,6 @@ class aa310_state : public aabase_state
253254
, m_fdc(*this, "fdc")
254255
, m_floppy(*this, "fdc:%u", 0U)
255256
//, m_hdc(*this, "hdc")
256-
//, m_test(*this, "test")
257257
, m_centronics(*this, "centronics")
258258
, m_cent_data_out(*this, "cent_data_out")
259259
{ }
@@ -281,7 +281,6 @@ class aa310_state : public aabase_state
281281
required_device<wd1772_device> m_fdc;
282282
optional_device_array<floppy_connector, 4> m_floppy;
283283
//optional_device<hd63463_device> m_hdc;
284-
//optional_device<archimedes_test_slot_device> m_test;
285284
required_device<centronics_device> m_centronics;
286285
required_device<output_latch_device> m_cent_data_out;
287286
};
@@ -333,7 +332,6 @@ class aa4000_state : public aabase_state
333332
: aabase_state(mconfig, type, tag)
334333
, m_i2cmem(*this,"i2cmem")
335334
, m_floppy(*this, "upc:fdc:%u", 0U)
336-
//, m_test(*this, "test")
337335
, m_ioeb_control(0)
338336
{ }
339337

@@ -352,7 +350,6 @@ class aa4000_state : public aabase_state
352350
void ioeb_w(offs_t offset, u8 data);
353351

354352
optional_device_array<floppy_connector, 4> m_floppy;
355-
//required_device<archimedes_test_slot_device> m_test;
356353

357354
u8 m_ioeb_control;
358355

@@ -1028,6 +1025,8 @@ INPUT_PORTS_END
10281025
void aabase_state::floppy_formats(format_registration &fr)
10291026
{
10301027
fr.add_pc_formats();
1028+
fr.add(FLOPPY_HFE_FORMAT);
1029+
//fr.add(FLOPPY_HFE3_FORMAT);
10311030
// Archimedes formats
10321031
fr.add(FLOPPY_ACORN_ADFS_NEW_FORMAT);
10331032
fr.add(FLOPPY_APD_FORMAT);
@@ -1114,14 +1113,14 @@ void aa500_state::aa500(machine_config &config)
11141113
//m_ioc->gpio_r<2>().set("rtc", FUNC(pcf8573_device::min_r));
11151114
//m_ioc->gpio_r<3>().set("rtc", FUNC(pcf8573_device::sec_r));
11161115
m_ioc->gpio_r<4>().set([this] { return m_selected_floppy ? m_selected_floppy->dskchg_r() : 1; });
1117-
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d", machine().describe_context(), state); });
1116+
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d\n", machine().describe_context(), state); });
11181117

11191118
ACORN_VIDC1(config.replace(), m_vidc, 24_MHz_XTAL);
11201119
m_vidc->set_screen("screen");
11211120
m_vidc->vblank().set(m_memc, FUNC(acorn_memc_device::vidrq_w));
11221121
m_vidc->sound_drq().set(m_memc, FUNC(acorn_memc_device::sndrq_w));
11231122

1124-
// TODO: implement A500 keyboard, uses M6500/11 MCU
1123+
// TODO: implement A500 keyboard, uses M6500/1 MCU
11251124

11261125
m_ram->set_default_size("4M");
11271126

@@ -1208,9 +1207,9 @@ void aa310_state::aa310(machine_config &config)
12081207
m_ioc->gpio_w<0>().set("i2cmem", FUNC(pcf8583_device::sda_w));
12091208
m_ioc->gpio_w<1>().set("i2cmem", FUNC(pcf8583_device::scl_w));
12101209
m_ioc->gpio_r<2>().set([this] { return m_selected_floppy ? !m_selected_floppy->ready_r() : 0; });
1211-
//m_ioc->gpio_r<3>().set([this] () { logerror("%s: Reserved", machine().describe_context()); return 0; });
1212-
//m_ioc->gpio_r<4>().set([this] () { logerror("%s: Aux IO connector", machine().describe_context()); return 0; });
1213-
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %s", machine().describe_context(), state); });
1210+
//m_ioc->gpio_r<3>().set([this] () { logerror("%s: Reserved\n", machine().describe_context()); return 0; });
1211+
//m_ioc->gpio_r<4>().set([this] () { logerror("%s: Aux IO connector\n", machine().describe_context()); return 0; });
1212+
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %s\n", machine().describe_context(), state); });
12141213

12151214
m_ram->set_default_size("1M");
12161215

@@ -1444,6 +1443,7 @@ void aa310_state::ar140(machine_config &config)
14441443
void aa310_state::aa540(machine_config &config)
14451444
{
14461445
aa310(config);
1446+
14471447
m_maincpu->set_clock(52_MHz_XTAL / 2); // ARM3
14481448
m_maincpu->set_copro_type(arm_cpu_device::copro_type::VL86C020);
14491449

@@ -1452,8 +1452,6 @@ void aa310_state::aa540(machine_config &config)
14521452
// expansion slots - 4-card backplane
14531453
ARCHIMEDES_PODULE_SLOT(config, m_podule[1], m_exp, archimedes_exp_devices, nullptr); // Acorn AKA31 SCSI 100MB HDD
14541454
ARCHIMEDES_PODULE_SLOT(config, m_podule[3], m_exp, archimedes_exp_devices, nullptr);
1455-
1456-
//ARCHIMEDES_TEST_SLOT(config, m_test, archimedes_test_devices, nullptr);
14571455
}
14581456

14591457
void aa310_state::ar225(machine_config &config)
@@ -1509,15 +1507,17 @@ void aa310_state::av20dev(machine_config &config)
15091507
void aa4000_state::aa3010(machine_config &config)
15101508
{
15111509
aabase(config);
1510+
15121511
m_maincpu->set_clock(72_MHz_XTAL / 6); // ARM250
1512+
m_maincpu->set_copro_type(arm_cpu_device::copro_type::VL86C020);
15131513

15141514
m_ioc->baud_w().set("upc:serial1", FUNC(ns16450_device::clock_w));
1515-
m_ioc->peripheral_r<1>().set([this] () { logerror("%s: IOC: Peripheral Select 1 R", machine().describe_context()); return 0; });
1516-
m_ioc->peripheral_w<1>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 1 W %d", machine().describe_context(), state); });
1515+
m_ioc->peripheral_r<1>().set([this] () { logerror("%s: IOC: Peripheral Select 1 R\n", machine().describe_context()); return 0; });
1516+
m_ioc->peripheral_w<1>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 1 W %d\n", machine().describe_context(), state); });
15171517
m_ioc->peripheral_r<2>().set("econet", FUNC(archimedes_econet_slot_device::read));
15181518
m_ioc->peripheral_w<2>().set("econet", FUNC(archimedes_econet_slot_device::write));
1519-
m_ioc->peripheral_r<3>().set([this] () { logerror("%s: IOC: Peripheral Select 3 R", machine().describe_context()); return 0; });
1520-
m_ioc->peripheral_w<3>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 3 W %d", machine().describe_context(), state); });
1519+
m_ioc->peripheral_r<3>().set([this] () { logerror("%s: IOC: Peripheral Select 3 R\n", machine().describe_context()); return 0; });
1520+
m_ioc->peripheral_w<3>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 3 W %d\n", machine().describe_context(), state); });
15211521
m_ioc->peripheral_r<5>().set(FUNC(aa4000_state::ioeb_r));
15221522
m_ioc->peripheral_w<5>().set(FUNC(aa4000_state::ioeb_w));
15231523
m_ioc->gpio_r<0>().set(m_i2cmem, FUNC(pcf8583_device::sda_r));
@@ -1527,7 +1527,7 @@ void aa4000_state::aa3010(machine_config &config)
15271527
m_ioc->gpio_r<3>().set("idrom", FUNC(ds2401_device::read));
15281528
m_ioc->gpio_w<3>().set("idrom", FUNC(ds2401_device::write));
15291529
m_ioc->gpio_r<4>().set_constant(1); // Sintr
1530-
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d", machine().describe_context(), state); });
1530+
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d\n", machine().describe_context(), state); });
15311531

15321532
m_ram->set_default_size("1M").set_extra_options("2M");
15331533

@@ -1563,8 +1563,6 @@ void aa4000_state::aa3010(machine_config &config)
15631563

15641564
archimedes_econet_slot_device &econet(ARCHIMEDES_ECONET_SLOT(config, "econet", archimedes_econet_devices, nullptr));
15651565
econet.efiq_handler().set(m_ioc, FUNC(acorn_ioc_device::fl_w));
1566-
1567-
//ARCHIMEDES_TEST_SLOT(config, m_test, archimedes_test_devices, nullptr);
15681566
}
15691567

15701568
void aa4000_state::aa3020(machine_config &config)
@@ -1592,16 +1590,17 @@ void aa4000_state::aa4000(machine_config &config)
15921590
void aa5000_state::aa5000(machine_config &config)
15931591
{
15941592
aabase(config);
1593+
15951594
m_maincpu->set_clock(50_MHz_XTAL / 2); // ARM3
15961595
m_maincpu->set_copro_type(arm_cpu_device::copro_type::VL86C020);
15971596

15981597
m_ioc->baud_w().set("upc:serial", FUNC(ns16450_device::clock_w));
1599-
m_ioc->peripheral_r<1>().set([this] () { logerror("%s: IOC: Peripheral Select 1 R", machine().describe_context()); return 0; });
1600-
m_ioc->peripheral_w<1>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 1 W %d", machine().describe_context(), state); });
1598+
m_ioc->peripheral_r<1>().set([this] () { logerror("%s: IOC: Peripheral Select 1 R\n", machine().describe_context()); return 0; });
1599+
m_ioc->peripheral_w<1>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 1 W %d\n", machine().describe_context(), state); });
16011600
m_ioc->peripheral_r<2>().set("econet", FUNC(archimedes_econet_slot_device::read));
16021601
m_ioc->peripheral_w<2>().set("econet", FUNC(archimedes_econet_slot_device::write));
1603-
m_ioc->peripheral_r<3>().set([this] () { logerror("%s: IOC: Peripheral Select 3 R", machine().describe_context()); return 0; });
1604-
m_ioc->peripheral_w<3>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 3 W %d", machine().describe_context(), state); });
1602+
m_ioc->peripheral_r<3>().set([this] () { logerror("%s: IOC: Peripheral Select 3 R\n", machine().describe_context()); return 0; });
1603+
m_ioc->peripheral_w<3>().set([this] (int state) { logerror("%s: IOC: Peripheral Select 3 W %d\n", machine().describe_context(), state); });
16051604
m_ioc->peripheral_r<5>().set(FUNC(aa5000_state::ioeb_r));
16061605
m_ioc->peripheral_w<5>().set(FUNC(aa5000_state::ioeb_w));
16071606
m_ioc->gpio_r<0>().set("i2cmem", FUNC(pcf8583_device::sda_r));
@@ -1611,7 +1610,7 @@ void aa5000_state::aa5000(machine_config &config)
16111610
m_ioc->gpio_r<3>().set("idrom", FUNC(ds2401_device::read));
16121611
m_ioc->gpio_w<3>().set("idrom", FUNC(ds2401_device::write));
16131612
m_ioc->gpio_r<4>().set_constant(1); // Sintr
1614-
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d", machine().describe_context(), state); });
1613+
//m_ioc->gpio_w<5>().set([this] (int state) { logerror("%s: Sound Mute %d\n", machine().describe_context(), state); });
16151614

16161615
m_ram->set_default_size("2M").set_extra_options("4M");
16171616

@@ -1655,8 +1654,6 @@ void aa5000_state::aa5000(machine_config &config)
16551654
archimedes_econet_slot_device &econet(ARCHIMEDES_ECONET_SLOT(config, "econet", archimedes_econet_devices, nullptr));
16561655
econet.efiq_handler().set(m_ioc, FUNC(acorn_ioc_device::fl_w));
16571656

1658-
//ARCHIMEDES_TEST_SLOT(config, m_test, archimedes_test_devices, nullptr);
1659-
16601657
// extension rom
16611658
GENERIC_SOCKET(config, m_ext_rom, generic_linear_slot, "ext_rom", "bin,rom");
16621659
subdevice<software_list_device>("rom_list")->set_filter("A5000,ARC");
@@ -1665,6 +1662,7 @@ void aa5000_state::aa5000(machine_config &config)
16651662
void aa4_state::aa4(machine_config &config)
16661663
{
16671664
aa3010(config);
1665+
16681666
m_maincpu->set_clock(24_MHz_XTAL); // ARM3
16691667
m_maincpu->set_copro_type(arm_cpu_device::copro_type::VL86C020);
16701668

@@ -1725,11 +1723,17 @@ ROM_START( aa500 )
17251723
ROMX_LOAD( "a500_ros310_rom1.ic25", 0x000001, 0x80000, CRC(0be31dfc) SHA1(c2a7aa6737931171507950025c3bc1008800e0f7), ROM_BIOS(2) | ROM_SKIP(3) )
17261724
ROMX_LOAD( "a500_ros310_rom2.ic26", 0x000002, 0x80000, CRC(081c5825) SHA1(e42a356bfaa77a81ee9e7e2a8d58ff0f301583c2), ROM_BIOS(2) | ROM_SKIP(3) )
17271725
ROMX_LOAD( "a500_ros310_rom3.ic27", 0x000003, 0x80000, CRC(c9bd793b) SHA1(534428a338b10d49b4fc2d9d6ab4c2463e3c3db5), ROM_BIOS(2) | ROM_SKIP(3) )
1726+
ROM_SYSTEM_BIOS( 3, "sn63", "#63: RISC OS 2.00 (12 Oct 1988)" )
1727+
ROMX_LOAD( "a500_ros200_rom0.ic24", 0x000000, 0x10000, CRC(e69849a6) SHA1(80a0c849025a24d626804f57fe6ca992088d96e2), ROM_BIOS(3) | ROM_SKIP(3) )
1728+
ROMX_LOAD( "a500_ros200_rom1.ic25", 0x000001, 0x10000, CRC(3ad7e1c0) SHA1(427560f567fa5f8a118db64c8e4bc2756cb2a457), ROM_BIOS(3) | ROM_SKIP(3) )
1729+
ROMX_LOAD( "a500_ros200_rom2.ic26", 0x000002, 0x10000, CRC(e0f9466c) SHA1(017b658057e608b490f7e09ad5ef021687d9a79e), ROM_BIOS(3) | ROM_SKIP(3) )
1730+
ROMX_LOAD( "a500_ros200_rom3.ic27", 0x000003, 0x10000, CRC(7876cc6c) SHA1(99c008aa1eae1977545ab0cebf2d8b2f09879818), ROM_BIOS(3) | ROM_SKIP(3) )
17281731

17291732
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 )
17301733
ROMX_LOAD( "cmos_riscos2.bin", 0x0000, 0x0100, CRC(1ecf3369) SHA1(96163285797e0d54017d8d4ae87835328a4658bd), ROM_BIOS(0) )
17311734
ROMX_LOAD( "cmos_riscos2.bin", 0x0000, 0x0100, CRC(1ecf3369) SHA1(96163285797e0d54017d8d4ae87835328a4658bd), ROM_BIOS(1) )
17321735
ROMX_LOAD( "cmos_riscos3.bin", 0x0000, 0x0100, CRC(96ed59b2) SHA1(9dab30b4c3305e1142819687889fca334b532679), ROM_BIOS(2) )
1736+
ROMX_LOAD( "cmos_riscos2.bin", 0x0000, 0x0100, CRC(1ecf3369) SHA1(96163285797e0d54017d8d4ae87835328a4658bd), ROM_BIOS(3) )
17331737
ROM_END
17341738

17351739
ROM_START( aa500d )

0 commit comments

Comments
 (0)