-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathiris.toml
More file actions
263 lines (231 loc) · 10.4 KB
/
Copy pathiris.toml
File metadata and controls
263 lines (231 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# iris.toml — IRIS emulator configuration
# All paths are relative to the directory you run iris from.
# Command-line flags override any value set here.
# Run without graphics: no window, no REX3. Independent of audio.
# Can also be set with the --headless command-line flag.
headless = false
# Disable audio emulation (no HAL2). Independent of graphics/headless.
# Can also be set with --noaudio.
no_audio = false
# PROM ROM image (required).
prom = "prom.bin"
# Window scale factor. Uses logical points (macOS) / DPI-scaled pixels, so
# scale=2 is visibly ~2× bigger than scale=1 on every display.
# Valid: 1, 2, 3, or 4.
# Can also be set with the --2x command-line flag (CLI takes precedence).
scale = 1
# Scroll wheel sensitivity: pixels of trackpad/wheel movement per PS/2 detent.
# Lower = faster scroll; higher = slower. Tune to taste for your hardware.
# 40 works well for most Linux trackpads; try 80–120 if scroll is too fast.
#mouse_scroll_pixels_per_line = 40
# RAM bank sizes in MB.
# Each bank must be 0 (absent), 8, 16, 32, 64, or 128.
# The SGI Indy supports up to two populated banks; banks 2 and 3 are
# typically absent. Total RAM = sum of non-zero banks.
banks = [128, 128, 0, 0]
# NAT subnet for the internal network (CIDR notation).
# The gateway gets host .1 and IRIX gets host .2.
# Change this if 192.168.0.x conflicts with your local network.
#nat_subnet = "192.168.5.0/24"
# SCSI devices.
# Valid IDs: 1–7. The SCSI controller itself occupies ID 0.
# Typical Indy layout:
# ID 1 — internal hard disk
# ID 4 — internal CD-ROM (removable, 512-byte block mode)
# ID 6 — optional second hard disk or tape
# Internal hard disk
[scsi.1]
path = "scsi1.raw"
cdrom = false
#overlay = true
# Internal hard disk
#[scsi.2]
#path = "scsi2.raw"
#cdrom = false
# Scratch volume for host<->guest file injection without networking.
# iris auto-creates the file at `path` if missing — first 4 KB hold a minimal
# SGI Volume Header (so IRIX recognises the device); the rest (size_mb MB
# minus 4 KB) is the host-controlled payload area. The CI socket exposes
# scratch-write/scratch-read/scratch-clear/scratch-info; offsets passed to
# those commands are relative to the payload start, so the VH is never
# touched. The guest reads the same bytes at offset 0 of /dev/rdsk/dks0dNvol.
# No higher-level format is imposed — typical use is a tar stream:
# host: iris CI: scratch-write {host_path: "bundle.tar"}
# guest: dd if=/dev/rdsk/dks0d2s0 bs=512 | tar xf -
# tar cf - /var/log/foo | dd of=/dev/rdsk/dks0d2s0 bs=512 conv=notrunc
# host: iris CI: scratch-read {to_path: "log.tar"}
# IRIX raw block-device reads must be sector-aligned (bs must be a multiple
# of 512); bs=64 etc returns "Read error: I/O error".
# Implies cdrom=false, overlay=false (the volume must be host-writable, and
# scratch contents intentionally survive snapshot rollback so a freshly
# injected bundle isn't reverted).
#[scsi.2]
#path = "scratch.raw"
#cdrom = false
#overlay = false
#scratch = true
#size_mb = 64
# DaynaPort SCSI/Link — Ethernet over the SCSI bus (SCSI type 3, Processor).
# Requires a build with `--features daynaport` AND a driver in the guest; IRIX
# has none in the box (see github.com/techomancer/irixdayna, where it shows up
# as dp0). Has no disk image: path/discs/overlay/scratch don't apply.
# mac — optional; default 00:80:19:44:50:<scsi-id>
# subnet — optional; this target's own NAT subnet (gateway .1, guest .2).
# Must differ from nat_subnet (ec0's). Default 192.168.10.0/24.
# See docs/daynaport.md.
#[scsi.3]
#kind = "daynaport"
#mac = "00:80:19:12:34:56"
#subnet = "192.168.10.0/24"
# NAT subnet for the internal network (CIDR notation).
# The gateway gets host .1 and IRIX gets host .2.
# Change this if 192.168.0.x conflicts with your local network.
#nat_subnet = "192.168.0.0/24"
# NFS share, served in-process by the NAT gateway (NFSv2 for IRIX 5.3, NFSv3
# for 6.x — nothing to install on the host). The export is a single root.
# From IRIX: mount <gateway_ip>:/ /mnt (default gateway: 192.168.0.1)
[nfs]
shared_dir = "./shared"
#version = "auto" # "auto" (default), "v2" or "v3"
# Port forwarding rules — forward host ports into the guest (IRIX).
# proto: "tcp" or "udp"
# host_port: port to listen on on the host
# guest_port: port inside the VM to forward to
# bind: "localhost" (loopback only, default) or "any" (all interfaces)
#
# Example: forward host TCP 2323 → IRIX telnet (23), localhost only:
[[port_forward]]
proto = "tcp"
host_port = 2323
guest_port = 23
bind = "localhost"
#
# Example: forward host UDP 5353 → IRIX port 5353, all interfaces:
#[[port_forward]]
#proto = "udp"
#host_port = 5353
#guest_port = 5353
#bind = "any"
#[[port_forward]]
#proto = "udp"
#host_port = 7777
#guest_port = 7
#bind = "localhost"
# Internal CD-ROM.
# For a single disc, set path only.
# For a changer (cycled with "scsi eject 4" in the monitor), list all
# ISO images in `discs`; the first entry is mounted at startup.
#[scsi.4]
#path = "cdrom4.iso"
#cdrom = true
#discs = ["second.iso", "cdrom4.iso", "patches.iso"]
# Runtime disc switching (no extra config needed).
# Load any ISO/CHD at runtime by pressing Ctrl+F12 (RCtrl+F12 in the standalone
# window, Ctrl/Cmd+F12 in the GUI) and picking a file. Behaviour follows the
# number of discs queued for the drive:
# - empty tray: the picked disc simply loads
# - one disc: loading another replaces it
# - two+ discs: ejecting cycles through them; a single disc ejects to empty
# `path` is optional: omit it (or comment it out) to boot with an empty tray and
# insert media later.
#[scsi.4]
#cdrom = true
#path = "cdrom4.iso" # optional — omit to start with an empty tray
# VINO video-in (IndyCam). Off by default.
# source: "off" | "test_pattern" | "black" | "camera" (--features camera)
# standard: "ntsc" | "pal"
#[vino]
#source = "camera"
#standard = "ntsc"
#camera_index = 0
# ── Networking backend ────────────────────────────────────────────────────────
# mode = "nat" (default) : built-in software NAT gateway (DHCP/DNS/ICMP/TCP/UDP
# + the [[port_forward]] rules above). No host
# privileges or extra libraries needed.
# mode = "pcap" : bridge the guest's raw Ethernet frames onto a real
# host interface (requires building with --features
# pcap and elevated privileges). The guest becomes a
# real L2 host on your LAN; NAT services and port
# forwarding do NOT apply in this mode.
#
# List candidate interfaces: iris --list-net-interfaces
# (or, in the monitor: net interfaces)
#
# pcap_interface accepts EITHER:
# - a 1-based index from --list-net-interfaces, e.g. "1" (easiest, esp. Windows)
# - an exact device name, e.g. "eth0" / "en0"
# - omit it entirely: if launched from a terminal you'll get an interactive
# menu to pick the interface; if there's no console (headless/CI) it
# auto-picks the first up, non-loopback NIC.
#
# IMPORTANT (Windows): device names look like \Device\NPF_{GUID}. Backslashes are
# escape characters inside a normal "double-quoted" TOML string, so you MUST use a
# 'single-quoted' TOML *literal* string (no escaping), or just use the index.
#
# NOTE: the [network] header below is REQUIRED. If you uncomment `mode`/
# `pcap_interface` but leave `[network]` commented out, the keys land in the
# top-level table and are rejected as unknown (the emulator will refuse to
# start) — they only take effect under the [network] table.
[network]
mode = "nat"
#pcap_interface = "1" # by index (recommended)
#pcap_interface = "wlan0" # by name (Linux/macOS)
#pcap_interface = '\Device\NPF_{385F30D0-9166-45D3-BBC6-F1D9C5300AF9}' # Windows (literal '...' string!)
# Ethernet station address for ec0. Defaults to 08:00:69:12:34:56 (SGI's OUI)
# when unset. Backdoor-injected into NVRAM (Indy) / serial EEPROM (Indigo2)
# before boot — no need to `setenv eaddr` by hand at the PROM monitor.
#mac = "08:00:69:12:34:56"
# N64 development board (Ultra64 GIO card). Needs a build with
# --features ultra64 and the ultra64 branch of github.com/techomancer/gopher64,
# which maps the shared-memory bridge (/iris_n64_bridge). See HELP.md.
#[ultra64]
#enabled = true
# ── Machine ───────────────────────────────────────────────────────────────────
# profile: "indy_ip24" (default) or "indigo2_ip22" (same as --ip22)
# cpu: "r4400" (default) or "r5000" (same as --cpu). Both are in every build.
#[machine]
#profile = "indy_ip24"
#cpu = "r4400"
# Per-config NVRAM files, so two installs don't overwrite each other's PROM env.
# These are top-level keys: put them near the top of the file, above any
# [section], if you uncomment them.
#nvram = "nvram.bin"
#nveeprom = "nveeprom.bin" # Indigo2 only
# Graphics: board "newport" (default) or "xz" (Indy XZ/Elan preview stub);
# heads 1 or 2; resolution "guest" (IRIX/PROM programs VC2), "1024x768",
# "1280x960" or "1280x1024".
#[graphics]
#board = "newport"
#heads = 1
#resolution = "guest"
# CP0 Count frequency. Default 33 MHz, which IRIX reports as a 66 MHz CPU.
#[clock]
#fixed_mhz = 33
# Start the guest's real-time clock offset from the host's current time. Every
# field is optional and signed (-n or +n). Years/months step the calendar, the
# rest add as time. Applied once at startup; the RTC holds 1970-2039.
#[rtc_offset]
#years = -18
#months = -4
#days = -2
#hours = -13
#minutes = -4
#seconds = -27
# HAL2 audio output buffering.
#[audio]
#prebuf_ms = 20
#cpal_buffer_frames = 512
# Host thread pinning.
#[perf]
#thread_affinity = true
#cpu_core = 2
#rex3_core = 3
#refresh_core = 4
# jitv2 compile-pool threads (--features jitv2; same as --jitv2-threads).
#[jitv2]
#threads = 1
# Debug knobs, applied as environment variables at start.
#[debug]
#no_idle = false # IRIS_NO_IDLE: disable idle park (idle-pause builds)
#gui_gl_capture = false # IRIS_GUI_GL: iris-gui GL capture renderer
#debug_log = "scsi,net" # IRIS_DEBUG_LOG: devlog modules to enable at startup