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>
30 lines
1.6 KiB
Markdown
30 lines
1.6 KiB
Markdown
# 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 for `PKT 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 relaunching `netnub -p -f btl4opt` so
|
|
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.
|