rx2030: networking hack (nw)

This commit is contained in:
Patrick Mackinlay 2019-02-26 18:16:43 +07:00
parent 69902ee2b3
commit 330c498e5d
2 changed files with 31 additions and 8 deletions

View File

@ -231,6 +231,28 @@ void rx2030_state::rx2030_init()
if (!m_vram)
m_iop_interface |= VID_ABSENT;
/*
* HACK: the prom bfs code broadcasts to the network address (i.e. the
* host portion is "all zeroes"), instead of to the standard "all ones".
* This makes it very difficult to receive the bfs request in a modern host
* OS; the patch changes the code to broadcast to the standard broadcast
* address instead.
*
* Technique is identical to that described for the rx3230 below.
*/
switch (system_bios())
{
case 1:
m_rom[0x1ab68 >> 1] = 0x0624;
m_rom[0x1ab6a >> 1] = 0xffff;
break;
case 2:
m_rom[0x1a7f8 >> 1] = 0x0624;
m_rom[0x1a7fa >> 1] = 0xffff;
break;
}
}
u16 rx2030_state::mmu_r(offs_t offset, u16 mem_mask)
@ -268,7 +290,7 @@ void rx2030_state::iop_program_map(address_map &map)
map(0x00000, 0x1ffff).ram();
map(0x20000, 0x3ffff).rw(FUNC(rx2030_state::mmu_r), FUNC(rx2030_state::mmu_w));
map(0x80000, 0xbffff).rom().region("v50_ipl", 0).mirror(0x40000);
map(0x80000, 0xbffff).rom().region("rx2030", 0).mirror(0x40000);
}
void rx2030_state::iop_io_map(address_map &map)
@ -334,7 +356,7 @@ void rx2030_state::iop_io_map(address_map &map)
else
m_iop->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
m_iop_interface |= IOP_IACK;
m_iop_interface &= ~IOP_IRQ; // maybe?
m_iop_interface &= ~IOP_IRQ;
break;
default:
@ -426,7 +448,7 @@ void rx2030_state::rx2030_map(address_map &map)
// interrupt the iop
m_iop_interface &= ~IOP_IACK;
m_iop_interface |= IOP_IRQ; // maybe?
m_iop_interface |= IOP_IRQ;
m_iop->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
break;
@ -484,6 +506,7 @@ void rx2030_state::rx2030(machine_config &config)
V50(config, m_iop, 20_MHz_XTAL / 2);
m_iop->set_addrmap(AS_PROGRAM, &rx2030_state::iop_program_map);
m_iop->set_addrmap(AS_IO, &rx2030_state::iop_io_map);
m_iop->out_handler<2>().set(m_buzzer, FUNC(speaker_sound_device::level_w));
// general dma configuration
m_iop->out_hreq_cb().set(m_iop, FUNC(v50_device::hack_w));
@ -520,6 +543,7 @@ void rx2030_state::rx2030(machine_config &config)
//m_kbdc->hot_res().set_inputline(m_maincpu, INPUT_LINE_RESET);
m_kbdc->kbd_clk().set(kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
m_kbdc->kbd_data().set(kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
m_kbdc->set_default_bios_tag("award15");
SCC85C30(config, m_scc, 1.8432_MHz_XTAL);
m_scc->configure_channels(m_scc->clock(), m_scc->clock(), m_scc->clock(), m_scc->clock());
@ -748,7 +772,7 @@ void rx3230_state::rx3230(machine_config &config)
{
R3000A(config, m_cpu, 50_MHz_XTAL / 2, 32768, 32768);
m_cpu->set_addrmap(AS_PROGRAM, &rx3230_state::rx3230_map);
m_cpu->set_fpurev(mips1_device_base::MIPS_R3010A);
//m_cpu->set_fpurev(mips1_device_base::MIPS_R3010A);
m_cpu->in_brcond<0>().set([]() { return 1; }); // writeback complete
// 32 SIMM slots, 8-128MB memory, banks of 8 1MB or 4MB SIMMs
@ -943,7 +967,7 @@ void rx3230_state::lance_w(offs_t offset, u16 data, u16 mem_mask)
}
ROM_START(rx2030)
ROM_REGION16_LE(0x40000, "v50_ipl", 0)
ROM_REGION16_LE(0x40000, "rx2030", 0)
ROM_SYSTEM_BIOS(0, "v4.32", "Rx2030 v4.32, Jan 1991")
ROMX_LOAD("50-00121__005.u139", 0x00000, 0x10000, CRC(b2f42665) SHA1(81c83aa6b8865338fda5c03733ede91749997648), ROM_BIOS(0) | ROM_SKIP(1))
ROMX_LOAD("50-00120__005.u140", 0x00001, 0x10000, CRC(0ffa485e) SHA1(7cdfb81d1a547c5ccc88e1e0ef73d447cd03e9e2), ROM_BIOS(0) | ROM_SKIP(1))
@ -956,9 +980,6 @@ ROM_START(rx2030)
ROMX_LOAD("50-00119__003.u141", 0x20001, 0x10000, CRC(c8469906) SHA1(69bbf4b5c415b2e2156a4467bf9cb30e79f586ef), ROM_BIOS(1) | ROM_SKIP(1))
ROMX_LOAD("50-00118__003.u142", 0x20000, 0x10000, CRC(18cc001a) SHA1(198023e92e1e3ba2fc8637f5dd6f370e7e023fdd), ROM_BIOS(1) | ROM_SKIP(1))
ROM_REGION(0x800, "i8742_eprom", 0)
ROM_LOAD("keyboard_1.5.bin", 0x000, 0x800, CRC(f86ba0f7) SHA1(1ad475451db35a76d929824c035d582279fbe3a3))
/*
* The following isn't a real dump, but a hand-made nvram image that allows
* entry to the boot monitor. Variables can be adjusted via the monitor,

View File

@ -53,6 +53,7 @@ public:
, m_cpu(*this, "cpu")
, m_iop(*this, "iop")
, m_ram(*this, "ram")
, m_rom(*this, "rx2030")
, m_rtc(*this, "rtc")
, m_fio(*this, "fio")
, m_kbdc(*this, "kbdc")
@ -112,6 +113,7 @@ private:
required_device<r2000a_device> m_cpu;
required_device<v50_device> m_iop;
required_device<ram_device> m_ram;
required_region_ptr<u16> m_rom;
// i/o devices
required_device<mc146818_device> m_rtc;