Files
TeslaRel410/emulator/net-boot/README.md
T
CydandClaude Fable 5 9536d4cbc0 NET: full networked mission runs end-to-end; fix blank VDB heads (NIC/VDB port clash)
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>
2026-07-05 21:18:42 -05:00

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.