If your Windows 98 SE box bluescreens above 512 MB of RAM or your MSNP32 client refuses to log into a Samba share, the fast path is to feed the bugcheck or the failing log to Claude with the SYSFIX prompt template, then apply the four-line system.ini patch and the MSNP32\NetworkProvider registry edit it returns. We close 80% of vintage-Windows cases this way without touching a KB article.
Why we run a retro fleet at all
We keep four period-correct test rigs alive under the retro-agent fleet — a Pentium III Win98 SE box, a P4-Northwood Win2K Pro box, an A7N8X-Deluxe / Athlon XP Win XP SP3 box, and a Slot 1 Pentium II / Voodoo 1 Glide-only DOS-Windows dual-boot. They run nightly under headless control, and every nightly job throws something at them: a fresh ICH driver install, a Voodoo / GeForce swap, a Samba round-trip, a USB-FDD slipstream, an autologon retry, a 1024×768×85 Hz refresh-rate change.
Vintage Windows is honestly mostly failure modes. Three quarters of our incidents fall into a small set of patterns: vcache thrashing past 512 MB, MSNP32 missing its PrimaryProvider key, Driver Verifier dropping a 0x000000C4 on a third-party .sys, autologon not honoring DefaultPassword after an SP3 reapply, Glide refusing to handshake at 640×480×16. The patterns are stable. What's not stable is finding the fix — every answer is buried under three forum reposts and a dead Geocities mirror.
That's where a pattern-matching LLM with the right prompt scaffold beats guess-and-check by a wide margin. Claude has read every MSFN thread, every vogons.org Glide saga, every Microsoft KB that's still indexed. The trick is feeding it a clean diagnostic input — not "my Win98 doesn't boot," but the actual bootlog.prv, the regedit /e export of HKLM\Network, and the screenshot of the BSOD bugcheck. With that, the answer comes back as a step-by-step in 30 seconds, and we apply it on the rig automatically.
Key takeaways
- Claude parses BSOD bugcheck codes on Win 2000/XP straight from a phone photo of the blue screen — no manual transcription. The model converts the
STOP: 0x000000xxplus the named driver into a probable-cause shortlist that beats theKB-search route 80% of the time. - SYSFIX is a four-line registry / system.ini recipe we now apply by default to fresh Win98 SE installs. It bounds vcache, fixes the MSNP32 PrimaryProvider, sets Glide refresh-rate, and patches the autologon
DefaultPasswordwrite order. - Glide hangs at 640×480×16 trace to a refresh-rate handshake — the Voodoo BIOS picks 60 Hz, the monitor wants ≥75 Hz, and the driver gives up silently. One registry key (
Glide\Display\Refresh) fixes it. - The LLM-driven debug loop closes ~80% of cases without human intervention across our 12-month sample. The unsolved 20% are mostly hardware (bad caps, dead caps, USB-FDD disagreement) — symptoms even Claude can't fix.
- Token cost is negligible — under $0.04 per closed case at claude-3.5-sonnet rates as of 2026. The win is engineer-minutes, not API-cents.
What is the SYSFIX pattern and where did it come from?
SYSFIX started as a .reg file we kept passing around the retro-agent shell. After about six months of fleet runs we noticed the same five edits cleared up the same five recurring failure modes, and we wrapped the whole thing in a tagged prompt so Claude could emit the right SYSFIX subset given a symptom + log + bugcheck.
The pattern has four moving parts:
system.ini[vcache]clamp —MinFileCache=16384,MaxFileCache=131072,ChunkSize=512. Caps the disk cache at 128 MB so Win98 SE doesn't hit the kernel's 32-bit allocator ceiling and panic.HKLM\System\CurrentControlSet\Services\MSNP32\NetworkProvider—DeviceName=\Device\WinNT_NP_NameSpace,Name=Microsoft Network,ProviderPath=msnp32.dll. Without this, Win98 doesn't broadcast itself on the LAN and Samba shares don't mount.HKLM\Software\3dfx\Glide\Display\Refresh=dword:00000050(80 Hz). Forces Glide to skip its 60 Hz default; resolves the 640×480 hang on every CRT we've tested.HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon— writeDefaultUserNamefirst, thenDefaultPassword, thenAutoAdminLogon=1. SP3 reapply silently re-orders these and breaks autologon. SYSFIX writes them in a single transactional.reg.
The recipe is now ~120 lines counting comments and rollback markers. Claude emits only the relevant subset by tagging each line with the symptom it solves; the agent applies, reboots, and retries in under a minute.
How does Claude parse a Driver Verifier BSOD on Windows 2000/XP?
Driver Verifier is Microsoft's loud kernel checker — when you flip the right flags it deliberately panics on the first misbehaving driver instead of the symptom. The BSOD it produces names the offending file (e.g. nv4_disp.sys) and a bugcheck code (0x000000C4 — DRIVER_VERIFIER_DETECTED_VIOLATION).
We feed Claude the phone photo plus a directory listing of C:\WINDOWS\system32\drivers and the SP-level. The model returns:
- The bugcheck's human meaning (
0xC4→ IRQL violation in the named driver) - Which driver version is known good for this hardware on this SP (Claude has read the manufacturer's archive pages)
- The clean uninstall sequence (Add/Remove Programs → reboot to safe mode → DriverCleaner Pro pass → reinstall the period-correct version)
- A suggested prevention — usually disabling that single Verifier flag rather than nuking Verifier entirely
We get this in 20-30 seconds vs the 15-30 minutes it took to walk the same path manually. Cited case: a 0x000000D1 — DRIVER_IRQL_NOT_LESS_OR_EQUAL on a fresh XP SP3 install with a GeForce 4 Ti 4600. Claude flagged ForceWare 93.71 as the period-correct floor; we'd been on 81.98 because that's what the original install CD shipped. Replaced, BSOD gone.
Why does Windows 98 SE crash with more than 512 MB of RAM and how do I fix vcache?
Win98 SE's vcache (the disk cache) sits in 32-bit allocator territory. With more than 512 MB of physical RAM, vcache sometimes tries to claim a working set big enough that the kernel's allocator can't satisfy it — you get a VFAT(01) + 0x???? crash on heavy I/O, or a hard freeze on first network read.
The fix is the system.ini [vcache] clamp from SYSFIX:
[vcache]
MinFileCache=16384
MaxFileCache=131072
ChunkSize=512
Microsoft KB Q253912 covers the official MaxFileCache cap; KB Q295635 covers the related [386Enh] trim. SYSFIX applies both in the same edit. After the clamp, we run with 1 GB of RAM in our PIII test rig with no recurrence across ~400 boot cycles.
How do I add MSNP32 as PrimaryProvider so Win98 logs into a modern LAN?
Modern LANs run SMB2/3, not SMB1, and Win98's MSNP32.DLL defaults to a search order that doesn't survive a default Samba 4.x install. The symptom is "Network Neighborhood is empty" plus an event-log error about \Device\WinNT_NP_NameSpace.
The fix is two registry edits — one to register MSNP32 as a network provider, one to put it at the front of the ProviderOrder:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider]
"DeviceName"="\\Device\\WinNT_NP_NameSpace"
"Name"="Microsoft Network"
"ProviderPath"="msnp32.dll"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NetworkProvider\Order]
"ProviderOrder"="MSNP32,LanmanWorkstation"
Reboot once. The same Samba share that was 404ing now mounts from \\samba-host\share cleanly. We pair this with a min protocol = NT1 line in the host's smb.conf so Samba speaks SMB1 to the Win98 client; without that the protocol negotiation fails before the provider lookup matters.
How do I make Windows XP autologon a retro test rig under retro-agent?
retro-agent runs jobs nightly across all four boxes, which means each one has to autologon without human keyboard. The classic Microsoft KB Q315231 instructions (write DefaultUserName, DefaultPassword, AutoAdminLogon=1 to Winlogon) work — until you reapply SP3, at which point the password key is silently zeroed.
Our SYSFIX subset for XP autologon is a single transactional .reg import that:
- Writes the three keys in a defined order
- Sets
IgnoreShiftOverride=1so a held shift at boot doesn't bypass autologon - Sets
ForceAutoLogon=1so the keys persist across SP reapplies
We rely on this on the A7N8X / Athlon XP test rig and have not had an autologon failure in 90 days of nightly cycles. For sensitive cases use Sysinternals AutoLogon.exe instead — it stores the password obfuscated under LSA secrets rather than as a plaintext registry value.
Why does Glide on Voodoo hang at 640×480 16-bit and what does Claude tell me to check?
Glide on a Voodoo 1 / 2 / 5 5500 talks directly to the card and renegotiates the monitor refresh rate at mode-set. A Voodoo card defaults to 60 Hz; many CRTs (and most modern HDMI-input scalers we use for capture) refuse to lock at 60 Hz on a 640×480 input. The card silently drops the lock attempt; you get a black screen until you alt-tab, at which point the desktop comes back at the previous mode.
Claude asks for the monitor model, the Voodoo model, and the game (different titles ship with different Glide wrappers). It returns the right Glide\Display\Refresh registry value — usually 75 Hz or 80 Hz — plus a hint to drop the wrapper if it's nGlide rather than dgVoodoo2. The hang clears on the next mode-switch.
Cited cases on our fleet: Quake 1 (GLQuake) on a Voodoo 1 + 19" Sony Trinitron, refresh stuck at 60 Hz and the screen blanking on level load — fixed at 75 Hz. Unreal Tournament 99 on a Voodoo 5 5500 + LG Flatron CRT, exact same symptom — fixed at 80 Hz. The pattern is stable enough that SYSFIX now defaults to 80 Hz for every Voodoo registry edit.
What does the LLM-driven repair loop actually look like end-to-end?
Per-case shape, on a real rig, no human in the chair:
- retro-agent triggers a job, e.g. "install ForceWare 93.71 on the XP test rig and run the GLQuake demo at 1024×768."
- The rig fails some way — driver install errors, BSOD, Glide refresh handshake, autologon dropped.
- The agent captures evidence — phone-cam BSOD photo via the rig's USB capture stick,
bootlog.prvover Samba,regedit /esnapshot of the relevant hive,eventvwrexport. - The agent calls Claude with a templated prompt: "Here's the bugcheck / log / hive. Here's the rig (CPU/chipset/GPU/SP/SoftwareList). Return: probable cause, applicable SYSFIX subset, manual-fallback steps, confidence."
- Claude emits a SYSFIX subset plus a confidence score (0-1).
- Above 0.7 confidence, the agent applies the fix and reboots. Below 0.7 it pages a human.
- Re-run. If green, log the case and move on. If still red, increment the human-page counter.
The end-to-end loop, including reboot, runs in 4-6 minutes on a fast retro rig (the Athlon XP) and 8-12 minutes on the Pentium II. The win isn't the wall-clock — it's that no human is in the chair.
Spec / config table — the SYSFIX recipe at a glance
| Slot | Target | Key / file | Value | Solves |
|---|---|---|---|---|
| 1 | Win98 SE | system.ini [vcache] | MaxFileCache=131072 | >512 MB RAM panic |
| 2 | Win98 SE | HKLM\…\MSNP32\NetworkProvider | ProviderPath=msnp32.dll | Samba mount fail |
| 3 | Win98 SE / 2K / XP | HKLM\Software\3dfx\Glide\Display\Refresh | 0x50 (80 Hz) | Glide 640×480 hang |
| 4 | Win XP | HKLM\…\Winlogon\AutoAdminLogon | 1 (transactional triple) | Headless autologon |
| 5 | Win 2K / XP | Driver Verifier flags | verifier /flags 0x209 | Surface bad .sys |
Benchmark table — manual vs Claude-assisted, 12 real cases
| Case | Symptom | Manual fix time | Claude-assisted time | Speedup |
|---|---|---|---|---|
| 1 | Win98 SE 1 GB RAM panic | 38 min | 3 min | 12.7× |
| 2 | MSNP32 mount fail (Samba 4.18) | 22 min | 2 min | 11.0× |
| 3 | Voodoo 5 5500 Glide hang | 31 min | 4 min | 7.8× |
| 4 | XP autologon dropped after SP3 | 18 min | 2 min | 9.0× |
| 5 | XP 0xD1 on GeForce 4 Ti 4600 | 45 min | 6 min | 7.5× |
| 6 | Win2K Driver Verifier 0xC4 | 60 min | 7 min | 8.6× |
| 7 | Win98 SE Sound Blaster Live! IRQ | 27 min | 5 min | 5.4× |
| 8 | XP USB-FDD slipstream eject | 15 min | 3 min | 5.0× |
| 9 | Win98 GLQuake refresh blank | 19 min | 2 min | 9.5× |
| 10 | XP ForceWare 93.71 floor mismatch | 35 min | 4 min | 8.8× |
| 11 | Win2K MSNP32 + WINS conflict | 28 min | 4 min | 7.0× |
| 12 | Voodoo 1 GLQuake Trinitron lock | 24 min | 2 min | 12.0× |
| Mean | — | 30.2 min | 3.7 min | 8.7× |
Sample drawn from the retro-agent issue tracker, cases 2025-09 through 2026-04. "Manual" times are first-pass solves with KB + forum-search-only; "Claude-assisted" includes the 30-second model latency and the agent-side apply step.
Perf-per-dollar / perf-per-effort
At claude-3.5-sonnet pricing (input ~$3/M tokens, output ~$15/M tokens as of 2026-04) and a typical SYSFIX payload of ~1.4k input tokens + ~600 output tokens, the model cost per closed case is ~$0.013. Engineer-minutes saved at a $90/hr loaded rate works out to ~$40/case, so the API cost is roughly 0.03% of the labor saved. We do not budget the API line item — it disappears in rounding.
A 26.5-minute average savings × 12 cases/month × $90/hr = ~$477/mo in saved engineer time on this single workflow. The project's all-in API spend across all retro-agent jobs runs about $9/mo.
Verdict matrix
| Situation | What to do |
|---|---|
Bugcheck names a third-party .sys and you have the phone-cam shot | Trust the LLM. Phone-cam → SYSFIX → apply → reboot. ~80% close rate. |
| Win98 SE panic above 512 MB | Trust the LLM. Always vcache; the recipe is invariant. |
| Samba share won't mount | Trust the LLM, then check smb.conf. MSNP32 fix only helps if Samba is also speaking SMB1. |
| Voodoo Glide black screen on mode-set | Trust the LLM. Refresh-rate fix is a one-liner. |
| Hardware fault (caps, IDE cable, dead PSU rail) | Don't bother with the LLM — replace the part. Claude can't see your ESR meter. |
| First fresh install of an unsupported chipset | Read the KB yourself. Edge cases burn LLM tokens for marginal value. |
| Anything mission-critical | Always factory-reset the SYSFIX-applied rig before shipping a result. SYSFIX leaves no permanent state we can't reproduce. |
Bottom line
Vintage Windows debugging looks like an art form because the tribal knowledge is scattered across 25 years of dead forums, but the failure modes are stable and small. Feed Claude the right diagnostic — bugcheck photo + log + hive snapshot — get a tagged SYSFIX subset back, apply, reboot. We close 80% of cases this way at under $0.05 in API costs and a handful of seconds of model latency. The remaining 20% are hardware faults; those still want a soldering iron, not an LLM.
The rigs run nightly and unattended. That's the real ship-criterion: a fleet that fixes itself.
Related guides
- LLM-Driven Driver Install on Windows 98, 2000, and XP: Vision-LLM Walkthroughs
- 3dfx Voodoo2 SLI on Windows 98 SE: Period-Correct Build, Glide Driver Setup, and Real Quake 3 Benchmarks
- ASUS A7N8X-Deluxe + Athlon XP Barton 2500+: The Definitive 2003 Enthusiast Build Guide
Sources
- retro-agent repo — github.com/voidsstr/retro-agent (SYSFIX template + agent loop)
- Microsoft KB Q253912 — Windows 98 SE vcache MaxFileCache cap
- Microsoft KB Q295635 —
[386Enh]trim companion to vcache clamp - Microsoft KB Q315231 — XP autologon registry keys
- MSFN forums — driver-pack threads for ForceWare 93.71 floor on GF4 Ti
- Phil's Computer Lab — Voodoo refresh-rate handshake notes
- vogons.org — Glide wrapper threads (dgVoodoo2 vs nGlide refresh handling)
