Console queues a mission -> egg over the wire -> pod loads + runs it -> all
cockpit heads render -> mission ends on the console timer. Four fixes:
1. ne2000.cpp: don't BX_PANIC on the TCR inhibit-CRC / auto-tx-disable bits.
A full production boot runs the packet driver's internal loopback
self-test, which sets those bits; Bochs' NE2000 aborted the whole
emulator. Record them in TCR state instead (harmless for an emulated NIC;
pcap/host does framing+CRC). Also fixes a latent coll_prio bit-4 vs bit-3
round-trip bug. Committed copy in vpx-device/.
2. Confirmed the mission-load page fault (00FF:219D) was RIO-OFF; booting
with the RIO live (net_full.conf) loads and runs the mission cleanly.
3. net_loop.conf + net-boot/loop.bat: GO.BAT-style loop so the pod stays
connected to the console and picks up missions as they're queued (the
real pod relaunches netnub after each mission/idle disconnect).
4. HEADLINE: blank MFD/radar heads were an I/O port collision. The VDB
video splitter is hardwired at 0x300-0x31A (palettes 0x300/0x308/0x310);
the NE2000 at nicbase=300 swallowed the game's VDB palette writes ->
vdb_pal stayed zero -> pal_draw decoded every head to black. Same VDB
spam corrupted NIC RX, dropping the console EndMission (mission overran
its timer). Fix: move the NIC to 0x340 (DOSBox nicbase=340 + DOS NET.CFG
PORT 340; must agree). VDB keeps 0x300. Config-only, no rebuild.
Adds: net_full.conf, net_loop.conf, net-boot/ (ODI drivers, NET.CFG@340,
loop.bat, README), vpx-device/{ne2000,ethernet_pcap}.cpp; updates NET-NOTES.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
net-boot — networked pod boot support files
Files the DOSBox pod mounts as D: when booting on the network path
(emulator/net_full.conf, emulator/net_loop.conf). The pod receives its
mission egg from the ops console (SheepShaver) over TCP 1501 — no -egg bypass.
Contents
LSL.COM,NE2000.COM,ODIPKT.COM— Novell ODI stack: Link Support Layer → NE2000 MLID → ODI-to-Packet-Driver shim. WATTCP/NetNub find the packet driver by scanning INT 0x60-0x80 forPKT DRVR(odipkt lands at SINT 0x60).NET.CFG— ODI driver config.PORT 340(see below),INT 3,FRAME Ethernet_II.loop.bat— GO.BAT-style loop: keeps relaunchingnetnub -p -f btl4optso the pod stays connected and picks up whatever mission the console queues.
The 0x340 NIC base (important)
The VDB video splitter board is hardwired at I/O 0x300-0x31A (its palette
registers are at 0x300/0x308/0x310; VDB_BASE in vpxlog.cpp). If the NE2000
NIC is put at the usual nicbase=300 it claims that same range and swallows
the game's mid-mission VDB palette writes → every MFD/radar head decodes to
black, and the VDB traffic corrupts the NIC's registers so the console's
EndMission is lost (the mission overruns its timer). The NIC is therefore at
0x340 in both the DOSBox conf (nicbase=340) and here (PORT 340); they
must agree. The VDB keeps 0x300 (the game hardwires it — on the real pod the
NIC lived at a different base for exactly this reason).
Bridge / pcap notes
See ../NET-NOTES.md for the two-TAP Windows bridge, the bridge-miniport
realnic binding, and npcap DLL path requirements.