This guide provides step-by-step instructions for setting up a Windows 98 virtual machine and testing RetroBrowser to ensure full compatibility with Windows 98 SE hardware and software constraints.
- Host machine with virtualization support (Intel VT-x or AMD-V)
- At least 4GB RAM available for host + VM
- Windows 98 SE installation media (ISO or physical CD)
- VirtualBox 6.1+ or VMware Workstation/Player
- Open VirtualBox and click "New"
- Configure VM settings:
- Name: Windows 98 SE
- Type: Microsoft Windows
- Version: Windows 98
- Memory: 128 MB (minimum) or 256 MB (recommended)
- Hard Disk: Create new, VDI format, 2 GB
Before starting the VM, adjust these settings:
System Settings:
-
Motherboard Tab:
- Boot Order: Floppy, CD, Hard Disk
- Chipset: PIIX3
- Enable I/O APIC: Unchecked
- Hardware Clock in UTC: Unchecked
-
Processor Tab:
- Processors: 1 CPU
- Execution Cap: 100%
-
Acceleration Tab:
- Paravirtualization: None
- Enable VT-x/AMD-V: Checked
- Enable Nested Paging: Checked
Display Settings:
- Video Memory: 16 MB
- Graphics Controller: VBoxVGA
- Enable 3D Acceleration: Unchecked
Storage Settings:
- IDE Controller: PIIX4
- Attach Windows 98 SE ISO to CD/DVD drive
Network Settings:
- Adapter 1: Enable Network Adapter
- Attached to: Host-only Adapter
- Adapter Type: PCnet-PCI II (Am79C970A)
- Promiscuous Mode: Allow All
Audio Settings:
- Enable Audio: Checked
- Audio Controller: SB16
- Audio Driver: (host default)
-
Start the VM and boot from CD
-
Choose "Boot from CD-ROM" at startup menu
-
At the Windows 98 Setup screen:
- Press Enter to continue
- Choose "Format the hard disk" (FAT32)
- Follow installation wizard
- Skip network setup (configure later)
- Install typical components
-
After installation, install VirtualBox Guest Additions:
- Devices → Insert Guest Additions CD
- Run setup from D:\SETUP.EXE
- Reboot after installation
- Open VMware and select "Create a New Virtual Machine"
- Choose "Custom (advanced)" configuration
- Configure settings:
- Guest OS: Microsoft Windows → Windows 98
- Memory: 128-256 MB
- Network: Host-only networking
- Disk: 2 GB, single file
- Disk Type: IDE
- Hardware Compatibility: Workstation 8.x or earlier
- Processors: 1 core
- Display: Auto-detect, 16 MB video memory
- Network Adapter: Host-only, AMD PCNet32
Follow similar steps as VirtualBox installation above.
On Host Machine (VirtualBox):
- File → Host Network Manager
- Create or select vboxnet0
- Configure IPv4:
- Address: 192.168.56.1
- Mask: 255.255.255.0
- Enable DHCP Server:
- Server Address: 192.168.56.100
- Lower Bound: 192.168.56.101
- Upper Bound: 192.168.56.254
On Host Machine (VMware):
- Edit → Virtual Network Editor
- Select VMnet1 (Host-only)
- Configure:
- Subnet IP: 192.168.137.0
- Subnet Mask: 255.255.255.0
- Use local DHCP: Enabled
-
Right-click "Network Neighborhood" → Properties
-
Ensure these components are installed:
- Client for Microsoft Networks
- AMD PCNET Family Ethernet Adapter
- TCP/IP → AMD PCNET Family
-
Select "TCP/IP → AMD PCNET" and click Properties:
- IP Address Tab: Obtain automatically (DHCP)
- DNS Configuration Tab: Disable DNS
- Gateway Tab: (leave empty)
- WINS Configuration Tab: Disable WINS
-
Click OK and reboot
-
After reboot, verify network:
- Start → Run → command
- Type:
ipconfig - Should show IP like 192.168.56.xxx or 192.168.137.xxx
On Windows 98:
ping 192.168.56.1
(or 192.168.137.1 for VMware)
Should receive replies. If not, check firewall on host.
Method 1: Shared Folder (VirtualBox)
- VM Settings → Shared Folders
- Add folder containing RetroBrowser_Win98.exe
- In Windows 98, access via Network Neighborhood
Method 2: Shared Folder (VMware)
- VM → Settings → Options → Shared Folders
- Add folder and enable
- Access via Network Neighborhood
Method 3: Simple HTTP Server
- On host, in RetroBrowser deploy folder:
python -m http.server 8080
- On Windows 98, use Internet Explorer:
- Navigate to http://192.168.56.1:8080
- Download RetroBrowser_Win98.exe
Verify Winsock 2.2:
- Check for C:\WINDOWS\SYSTEM\WS2_32.DLL
- If missing, install from Windows 98 CD:
- Run SETUP.EXE
- Add/Remove Components
- Select "Internet Tools" → "Winsock 2 Update"
Verify Visual C++ Runtime (if needed):
- RetroBrowser uses static linking (/MT), so no MSVCRT.DLL needed
- If errors occur, check for MSVCRT.DLL in C:\WINDOWS\SYSTEM
- Create folder: C:\RetroBrowser
- Copy RetroBrowser_Win98.exe to this folder
- Create desktop shortcut (optional)
RetroBrowser requires a proxy server running on the host machine.
- Install Python 3.8+ on host
- Navigate to RetroBrowser src/proxy directory
- Install dependencies:
pip install -r requirements.txt
Edit src/proxy/config.py:
PROXY_HOST = '0.0.0.0' # Listen on all interfaces
PROXY_PORT = 8888cd src/proxy
python proxy.pyShould see: "Proxy server listening on 0.0.0.0:8888"
On Windows 98, when launching RetroBrowser:
- Proxy address: 192.168.56.1:8888 (VirtualBox)
- Or: 192.168.137.1:8888 (VMware)
Objective: Verify binary starts without errors
Steps:
- Double-click RetroBrowser_Win98.exe
- Observe startup
Expected Result:
- Application window appears within 2-3 seconds
- No error dialogs about missing procedures or DLLs
- Window title shows "RetroBrowser"
Failure Indicators:
- "Procedure not found in ws2_32.dll" → Winsock 2.2 not installed
- "MSVCR100.dll not found" → CRT not statically linked (build error)
- Application crashes immediately → Incompatible API usage
Objective: Verify user interface works correctly
Steps:
- Launch RetroBrowser
- Check address bar is visible and editable
- Check navigation buttons (Back, Forward, Stop, Refresh)
- Resize window
- Minimize and restore window
Expected Result:
- All UI elements render correctly
- Address bar accepts text input
- Buttons are clickable (even if disabled)
- Window resizes smoothly
- No visual artifacts
Objective: Verify proxy connection works
Steps:
- Ensure proxy is running on host
- Launch RetroBrowser
- Enter URL: http://example.com
- Click Go or press Enter
Expected Result:
- Status bar shows "Connecting..."
- Connection succeeds within 5 seconds
- Page content loads
- No network timeout errors
Failure Indicators:
- "Cannot connect to proxy" → Check network configuration
- Timeout after 30 seconds → Firewall blocking port 8888
- "Winsock error" → Winsock 2.2 issue
Objective: Verify HTML parser and renderer work
Steps:
- Load simple test page: http://example.com
- Verify text displays
- Load page with formatting: http://info.cern.ch
- Check bold, italic, headings render
Expected Result:
- Text content visible and readable
- Basic formatting applied (bold, italic)
- Headings use larger font
- Links are underlined
- No rendering crashes
Objective: Verify JPEG image support
Steps:
- Navigate to page with images
- Wait for images to load
- Scroll to view all images
Expected Result:
- JPEG images decode and display
- No "broken image" icons
- Images scale appropriately
- No memory errors
Known Limitation:
- PNG images may not display (JPEG only currently)
Objective: Verify browsing history works
Steps:
- Load page A
- Click link to page B
- Click Back button
- Click Forward button
- Enter new URL (page C)
- Click Back twice
Expected Result:
- Back button returns to previous page
- Forward button works after Back
- History stack maintains correct order
- Address bar updates with each navigation
Objective: Verify no memory leaks or crashes
Steps:
- Launch RetroBrowser
- Browse 10-15 different pages
- Scroll through pages
- Resize window multiple times
- Leave running for 30 minutes
Expected Result:
- No crashes or freezes
- Memory usage stays under 32 MB
- UI remains responsive
- No "Out of memory" errors
Monitor:
- Use Ctrl+Alt+Del → Close Program to check if app is "Not Responding"
- Check available memory in System Properties
Objective: Verify graceful error handling
Steps:
- Enter invalid URL: "notaurl"
- Enter unreachable URL: "http://192.168.56.99"
- Stop proxy server mid-load
- Enter very long URL (500+ characters)
Expected Result:
- Invalid URL shows error message
- Unreachable URL times out gracefully
- Proxy disconnect shows connection error
- Long URL handled without crash
Objective: Measure page load performance
Steps:
- Clear any cache
- Load http://example.com
- Time from Enter to page fully rendered
- Repeat 3 times, average results
Expected Result:
- Simple page loads in < 5 seconds
- Complex page loads in < 15 seconds
- No UI freezing during load
Acceptable Performance (on 200MHz CPU):
- Text-only page: 2-5 seconds
- Page with images: 5-15 seconds
- Large page (100KB+): 15-30 seconds
Objective: Test behavior under low resources
Steps:
- Configure VM with 64 MB RAM
- Launch RetroBrowser
- Load multiple pages
- Monitor for memory errors
Expected Result:
- Application launches successfully
- Basic browsing works
- May show "Low memory" warnings from Windows
- Should not crash, but may slow down
Cause: Winsock 2.2 not installed or incompatible API used
Solution:
- Install Winsock 2.2 update from Windows 98 CD
- If persists, run compatibility checker on source code
- Verify build used correct WINVER flags
Cause: Incompatible API or wrong subsystem version
Solution:
- Check PE header:
dumpbin /headers RetroBrowser_Win98.exe - Verify subsystem version is 4.10
- Rebuild with build_win98.bat
Cause: Network misconfiguration or firewall
Solution:
- Verify VM has IP address:
ipconfig - Ping host from VM:
ping 192.168.56.1 - Check host firewall allows port 8888
- Verify proxy is running:
netstat -an | findstr 8888
Cause: JPEG decoder issue or memory limitation
Solution:
- Check image format (only JPEG supported)
- Verify libjpeg linked correctly
- Check available memory (need ~4MB for image cache)
- Try smaller images first
Cause: VM resource constraints or inefficient code
Solution:
- Increase VM RAM to 256 MB
- Disable unnecessary Windows 98 services
- Use /O2 optimization in build
- Profile code to find bottlenecks
Cause: Memory leak in application
Solution:
- Monitor memory usage over time
- Check for unreleased GDI objects
- Review network buffer management
- Use debug build to track allocations
Test Hardware Profile:
- CPU: 200 MHz (VM throttled)
- RAM: 128 MB
- Network: 10 Mbps simulated
Test Pages:
- Minimal: Plain text, < 1 KB
- Simple: Text + formatting, ~5 KB
- Standard: Text + images, ~50 KB
- Complex: Multiple images, ~200 KB
- Startup Time: Launch to window visible
- Connection Time: Enter URL to first byte
- Parse Time: First byte to DOM ready
- Render Time: DOM ready to screen paint
- Total Load Time: Enter URL to fully rendered
- Memory Usage: Before and after page load
Create log file: C:\RetroBrowser\benchmark.txt
Test Date: [date]
VM: VirtualBox 6.1
OS: Windows 98 SE (4.10.2222 A)
CPU: 200 MHz
RAM: 128 MB
Test 1: Minimal Page (http://example.com)
- Startup: 2.1s
- Connection: 0.8s
- Parse: 0.2s
- Render: 0.3s
- Total: 3.4s
- Memory: 8 MB → 10 MB
[Continue for each test page...]
- After any code changes to network, parser, or renderer
- After updating build flags
- Before releasing new version
- When adding new features
Run all 10 test cases from Part 5 and verify:
- No new failures introduced
- Performance not degraded > 10%
- Memory usage not increased > 20%
- All existing functionality still works
For advanced users, consider:
- Scripting VM snapshots for quick resets
- Using AutoIt or similar to automate UI testing
- Capturing screenshots for visual comparison
- Logging results to file for analysis
Minimum Requirements:
- CPU: 486DX 66 MHz
- RAM: 16 MB
- HDD: 500 MB
- Display: VGA
Recommended Requirements:
- CPU: Pentium 200 MHz
- RAM: 64 MB
- HDD: 2 GB
- Display: SVGA
RetroBrowser Target:
- CPU: Pentium 200 MHz
- RAM: 128 MB (64 MB minimum)
- HDD: 10 MB for application
- Display: 800x600, 256 colors minimum
ipconfig - Show network configuration
ping [host] - Test network connectivity
netstat -an - Show network connections
mem - Show memory usage
scandisk - Check disk for errors
defrag - Defragment hard drive
msconfig - System configuration utility
regedit - Registry editor
Recommended Snapshots:
- Fresh Install: Clean Windows 98 SE after installation
- Configured: Network configured, Winsock 2.2 installed
- With RetroBrowser: Application installed and tested
- Baseline: Known good state for regression testing
Usage:
- Restore "Baseline" before each test session
- Create new snapshot after successful tests
- Keep "Fresh Install" for major reconfigurations
- Windows 98 SE Documentation: Microsoft Archive
- VirtualBox Manual: https://www.virtualbox.org/manual/
- VMware Documentation: https://docs.vmware.com/
- Win32 API Reference (Win98): MSDN Library (archived)
- Winsock 2.2 Specification: Microsoft Docs
Document Version: 1.0
Last Updated: 2025-11-17
Maintained By: RetroBrowser Development Team