sgi/ip20: enable memory configuration

* add a minimal nvram dump to set eaddr and netaddr
This commit is contained in:
Patrick Mackinlay 2023-07-25 17:33:33 +07:00
parent f74fd47f1f
commit b47bbbc581
4 changed files with 37 additions and 16 deletions

View File

@ -3739,7 +3739,7 @@ void r4000_base_device::address_error(int intention, u64 const address)
template <typename T> void r4000_base_device::accessors(T &m)
{
space(AS_PROGRAM).cache(m);
space(AS_PROGRAM).specific(m);
read_byte = [&m](offs_t offset) { return m.read_byte(offset); };
read_word = [&m](offs_t offset) { return m.read_word(offset); };

View File

@ -400,8 +400,8 @@ protected:
address_space_config m_program_config_be;
// memory access helpers
memory_access<36, 3, 0, ENDIANNESS_LITTLE>::cache m_le;
memory_access<36, 3, 0, ENDIANNESS_BIG>::cache m_be;
memory_access<32, 3, 0, ENDIANNESS_LITTLE>::specific m_le;
memory_access<32, 3, 0, ENDIANNESS_BIG>::specific m_be;
std::function<u8(offs_t offset)> read_byte;
std::function<u16(offs_t offset)> read_word;

View File

@ -140,6 +140,10 @@ void ip20_state::cpu_map(address_map &map)
map(0x1fc0'0000, 0x1fc7'ffff).rom().region("prom", 0);
}
static DEVICE_INPUT_DEFAULTS_START(ip20_mc)
DEVICE_INPUT_DEFAULTS("VALID", 0x0f, 0x07)
DEVICE_INPUT_DEFAULTS_END
static void scsi_devices(device_slot_interface &device)
{
device.option_add("cdrom", NSCSI_CDROM_SGI).machine_config(
@ -172,6 +176,7 @@ void ip20_state::ip20(machine_config &config)
SGI_MC(config, m_mc, m_cpu, m_eerom, 50'000'000);
m_mc->eisa_present().set_constant(0);
m_mc->set_input_default(DEVICE_INPUT_DEFAULTS_NAME(ip20_mc));
SGI_HPC1(config, m_hpc, 0);
m_hpc->set_gio(m_cpu, AS_PROGRAM);
@ -281,6 +286,10 @@ void ip20_state::ip20(machine_config &config)
ROM_START(indigo_r4000)
ROM_REGION64_BE(0x80000, "prom", 0)
ROMX_LOAD("ip20prom.070-8116-004.bin", 0x000000, 0x080000, CRC(940d960e) SHA1(596aba530b53a147985ff3f6f853471ce48c866c), ROM_GROUPDWORD | ROM_REVERSE)
// hand-made content sets eaddr 08:00:69:12:34:56 and netaddr 192.168.137.2
ROM_REGION16_LE(0x100, "nvram", 0)
ROM_LOAD("nvram.bin", 0x000, 0x100, CRC(b8367798) SHA1(61af4c9dba69e9f0552c10770f16044421730b6d))
ROM_END
#define rom_indigo_r4400 rom_indigo_r4000

View File

@ -16,26 +16,38 @@
* - https://github.com/NetBSD/src/tree/trunk/sys/arch/sgimips/
*
* TODO:
* - audio, printer
* - devicify ioc1 and ctl1
*
* Status:
* - audio, printer
* - devicify ioc1 and ctl1
* - parity and cache diagnostics fail
* - irix 4.0.5 working
* - ide test failures
* - lca2 (unimplemented fpga program/readback)
* - nvram4 (security mode?)
* - fpu (cvt.?.? invalid operation exceptions)
*/
/*
* Installation instructions
* --
* 1. boot, enter monitor, set ethernet address: eaddr 08:00:69:12:34:56
* 2. start mame with CDROM iso image as hard disk ID 6: mame 4d20 ... -scsi:6 harddisk -hard2 pathname.iso
* 3. boot, enter monitor, launch sash: boot -f dksc(0,6,8)sash.IP6
* 4.
*/
/*
* WIP
* --
* 4D/2x doesn't support CDROM, so to install IRIX, mount the .iso
* as if it's a hard disk: ... -scsi:6 harddisk -hard2 pathname.iso
*
* install IRIX 4.0.5/5.3:
* - monitor: eaddr 08:00:69:12:34:56 # set ethernet mac address
* - monitor: init
* - monitor: dksc(0,6,8)sash.IP6 dksc(0,6,7)stand/fx.IP6 -x # start fx disk partition/label utility
* - fx: r; ro; ..; l; sync; ..; exit # create root partition and label disk
* - monitor: setenv tapedevice dksc(0,6,8)
* - monitor: dksc(0,6,8)sash.IP6 -m # copy/boot from miniroot
* - inst: sh # escape to shell from inst
* - sh: mkdir /mnt; mount /dev/dsk/dks0d6s7 /mnt; exit # mount distribution media
* - inst: from /mnt/dist
* - inst: go # may take ~1.5 hours
* - inst: shroot
* - sh: chkconfig windowsystem off; chkconfig xdm off # disable graphics subsystems (until graphics works)
* - sh: edit /etc/hosts and /etc/inittab # change host IP address, enable getty on console
* - inst: quit # complete installation and reboot
*/
#include "emu.h"