First post, by Marco Pistella
X-VESA 2.0 – Public Beta
A deep VESA diagnostic tool for real DOS hardware
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Hello everyone,
My name is Marco Pistella. I'm a DOS/x86 assembly programmer and vintage hardware enthusiast based in Italy. Over the past years I've been working on a personal project born out of a simple frustration: I couldn't find any DOS tool that actually tested VESA implementations instead of just reading what the BIOS claims to support.
Today I'm releasing the first public beta of X-VESA 2.0 here on Vogons, because if there's one place on the internet where people have the hardware — and the patience — to push a tool like this to its limits, it's here.
I'm looking for beta testers, hardware reports, bug reports, and feedback of any kind. Screenshots, logs, "it crashed on my [card]" — all welcome.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHAT IS X-VESA?
X-VESA is a DOS diagnostic program that performs in-depth analysis and verification of VESA BIOS Extensions (VBE) on real hardware. It enumerates all available VESA video modes, decodes the information returned by the VBE interface, and then actively tests what the hardware can actually do.
The key word is "actively". X-VESA does not trust the BIOS.
It probes VRAM directly, reads VGA registers to verify that a mode was actually initialized, cross-checks declared values against hardware behavior, and catches implementation bugs that have existed — undetected — for thirty years.
X-VESA supports VBE 1.0 through 3.0, including non-standard, partial, and defective implementations. Software VESA TSR drivers are supported.
The entire program — over 22,000 lines of x86 real-mode assembly — was written by hand, from scratch, without code generators or macros doing the heavy lifting. It is distributed as a single .COM executable with no external libraries, no runtime dependencies, and no installer. It just runs. The compressed executable is approximately 32 KB. Requires 302 KB of free conventional memory and an 80386 or higher.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHAT IT FOUND ALONG THE WAY
During development and testing on real hardware, X-VESA uncovered a number of previously undocumented (or underdocumented) behaviors.
The 4F06h divide-by-zero bug
Present in Nvidia (up to GT740), 3dfx, Trident, and Cirrus Logic implementations. Traced to unchanged code from the original 1990s VESA reference kit, never updated for VRAM > 8 MB. X-VESA detects and works around it.
GT740 horizontal timing quantization
This card's VGA emulation produces timing errors in exact multiples of 2/4/6 scanlines — a digital artifact of GPU-level VGA emulation. X-VESA's jitter analyzer is likely the first tool to detect and characterize this signature (see screenshot 09).
Nvidia 4F07h retrace inversion bug
Function 4F07h BL=80h on Nvidia cards waits for the end of retrace instead of the start, causing flickering in dual-page mode. Detected via a single 3DAh read immediately after the function returns. X-VESA automatically falls back to VGA retrace on affected cards.
RTX5070 / CSM mode VIDEO_200_LINES freeze
The standard INT 10h call for 200-line mode freezes the system in legacy/CSM mode on this card. X-VESA uses direct VGA register manipulation first, with BIOS as fallback.
ATI, S3, 3dfx, Intel-specific anomalies — and much more
3dfx Voodoo3: 4F06h returns a value larger than requested, triggering INT04 at C000:2F63h (inside the card's BIOS ROM — see screenshot 24). ATI Radeon 9250: 4F06h systematic 16-byte readback error. ATI 4200: SET/GET mismatch (sets 1032, reads back 1024). ET4000W32 / GD5434: 4F07h Y > 511 causes 9-bit overflow and silent reset to 0. Intel HD (i7-2600K): 640×480×16bpp linear has a scanline gap between 4085 and 4139 pixels. Intel HD (i5-6200U): physical CRTC registers not accessible in emulated VGA mode (see screenshot 07). And many other anomalies documented in the hardware bug database included with the distribution.
If your card has a quirky VESA implementation, X-VESA will probably find it.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FEATURES
Mode enumeration and validation
- Up to 256 VESA video modes, fully decoded per VBE version (1.0 / 1.1 / 1.2 / 2.0 / 3.0)
- Full memory model support: text, planar (1–4 bpp), packed-pixel (1–8 bpp), direct color (9–32 bpp including 15/16/24/32 bpp)
- Automatic reclassification of direct-color modes misdeclared as packed-pixel in pre-1.2 interfaces
- Banked window validation with automatic WinA/WinB fallback
- RGB mask validation with bitwise overlap detection
- BytesPerScanLine and LinBytesPerScanLine automatic correction
- VGA register cross-check to verify actual mode initialization
- Up to 22 error codes recorded per mode
Diagnostics and measurements
- VRAM benchmark: 8 / 16 / 32 / 64 / 128 / 256 / 512-bit access (FPU / SSE / AVX / AVX-512F), with overhead subtraction, graphical display. Where the linear frame buffer is available and the A20 line is enabled, all tests run in Unreal Mode for full 32-bit physical address access with no bank switching overhead. The AVX and AVX-512F paths are, to my knowledge, unique for a DOS .COM with no external libraries: the transition through PM/16 to configure XCR0, followed by vmovntdq/vmovdqu64 in Unreal Mode, is handled entirely in hand-written assembly.
- VRAM reliability test: three distinct patterns (BITS_TEST, BURST_TEST, MATRIX_TEST), configurable address range and pass count, real-time monitoring, navigable error table, saveable report
- Video timing analysis: vertical/horizontal frequency, bandwidth, interlace detection, jitter (σ/μ) with graphical sample distribution, zoom 10–400%, LED KITT animation during sampling
- Dual-page test with vertical retrace sync: OFF / VGA (3DAh polling) / VESA (4F07h BL=80h), with automatic Nvidia retrace inversion detection and fallback
- Virtual resolution test: 4F07h characterization (alignment granularity + upper bound on both axes), keyboard + mouse navigation, four range presets including Custom for bug isolation
- DAC 6/8-bit test: direct 3C6h probe, four color gradients, automatic VBE 4F09h fallback
- Physical VRAM measurement via direct hardware probe (independent of TotalMemory field), with memory aliasing detection
- Complete EDID read and decode: up to 8 DDC controllers, automatic deduplication, 9 decoded pages, extension block navigation, binary view, file save
- VBE/PM power management check and interactive state activation
- System capabilities: CPU mode, FPU, A20, CPUID, SSE, AVX, AVX-512F
Interface and I/O
- 80×40 text interface (640×400, 8×10 font, near-100% VGA compatible)
- Screenshot to IFF-PBM at any point via F2, with PackBits compression
- DOS INT 24h critical error handler with video state restoration
- INT 00h / INT 04h Guru Meditation: full register dump (EAX–ESP, DS/ES/FS/GS, EFLAGS, CS:IP) on red screen; CS segment C000h = crash inside graphics card BIOS ROM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHY A PUBLIC BETA ON VOGONS
I've tested X-VESA on a range of hardware in my own lab, but the point of a beta is to find what I couldn't. I'm particularly interested in:
Hardware coverage
ISA, VLB, PCI, AGP cards — the more exotic the better. Software VESA TSRs. Modern systems in legacy/CSM mode. Anything with a non-standard or partial VBE implementation.
What I'm looking for
- Crashes, hangs, or unexpected behavior on any hardware
- Incorrect readings or measurements that don't match what you'd expect
- VESA implementation bugs that X-VESA doesn't catch or misidentifies
- Documentation errors, unclear explanations, translation issues
- Suggestions for additional tests or output improvements
Every hardware report — even "it worked perfectly on my [card]" — is useful.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AFTER THE BETA
Once the beta phase is complete and known issues are resolved, the final release of X-VESA 2.0 will be published on GitHub with:
- Full source code (~22,000 lines of x86 assembly)
- Complete technical documentation
- Official build
- Notes on algorithms, design decisions, and the hardware bug database
The project will be fully open and freely available.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SCREENSHOTS
— Interface —

Main screen – S3 Incorporated 86C362. 63 VESA modes enumerated and validated, with resolution, color depth, memory segment, window size and granularity.

Extended interface information – 3dfx Voodoo3 3500 TV. PMID structure detected via both BIOS and 4F0Ah, with complete field decode.

EDID controller selection – 8 DDC controllers detected simultaneously. Controllers 6 and 7 return identical data and are automatically deduplicated.

Detailed video mode information – mode 010Ch (132×60 text). Full VBE field decode, window pointer, bank size, and pixel clock.
— VRAM tests —

VRAM access speed – Intel HD Graphics (Sandybridge/Ivybridge), banked mode. 8 to 256-bit access measured with overhead subtraction. AVX-512F not supported on this hardware.

VRAM reliability test in progress – elapsed 6s, estimated 1m33s, address 007800h, 6.43%, pass 2. Real-time display in graphic VESA mode.

Available VRAM per video mode – Intel HD Graphics. Banked access limited to 8.192 KiB per window; linear frame buffer exposes the full 262 MiB. Measured via direct hardware probe, independent of the TotalMemory field.
— Timing analysis —

Video scan timings – Intel HD Graphics (i5-6200U), 800×600×8. Bandwidth and interlace fields report "Emulated VGA CRTC registers!": indirect emulation detected, physical CRTC not accessible. Sync integrity 100%, σ/μ = 0.0039.

Video scan timings – Nvidia GT740, 1280×1024×8. Only 7 of 256 samples pass the validity threshold. σ/μ = 0.8582 – extreme jitter, characteristic of GPU-level VGA emulation.

Horizontal retrace sample distribution – Nvidia GT740, 640×480×8. Three distinct clusters separated by fixed multiples of scanlines: the digital signature of GPU VGA emulation quantization. X-VESA is likely the first tool to detect and characterize this artifact.
— Mode visualization —

Mode visualization – TEXT 132×25×4. Frame via direct VRAM write to B800h; interior: 16×16 matrix of all 256 foreground/background attribute combinations.

Mode visualization – PLANAR 800×600×4. 16 filled rectangles, one per VGA palette index 0–15.

Mode visualization – PACKED 640×480×8. 16×16 grid covering all 256 palette indices.

Mode visualization – DIRECT COLOR 640×480×24. 2D gradient: red/blue on horizontal axis, green on vertical. Values pre-calculated with integer remainder accumulation for uniformity at any resolution.
— Dual page and virtual resolution —

Dual-page test – VGA and VESA retrace both AVAILABLE. F10 cycles through OFF / VGA / VESA synchronization modes. The moving line traverses both pages with no flickering.

Virtual resolution – Intel HD, 65,472×4,099 pixels. Grid with coordinate labels at every 100-pixel intersection. Navigation via cursor keys and mouse.

Virtual resolution – Intel HD, 4,032×65,535 pixels. Vertical axis pushed to the signed 16-bit limit of function 4F07h.

Bottom-right corner of the 4,032×65,535 virtual page – Intel HD. Coordinates confirmed correct at the extreme vertical boundary.

Navigation near the 32,768-pixel horizontal boundary – Intel HD. Beyond this X value, 4F07h silently resets the display start to 0.

4F07h characterization result – Intel HD. Horizontal bound detected at 32,768 pixels (highlighted in red): the interface silently resets the X offset beyond this value. Vertical bound: PROPER.
— DAC test —

DAC test – 6-bit mode. Banding clearly visible on all four gradients. Press + to switch to 8-bit.

DAC test – 8-bit mode. Banding gone: smooth continuous ramp on all four channels. The switch is verified via direct probe on register 3C6h; VBE 4F09h is used as automatic fallback if direct I/O fails.
— Error handling —

Critical DOS error handler (INT 24h) – error 0013h (disk write-protected), class 08h. X-VESA intercepts the DOS error, presents available options, and restores video state correctly on exit.

Critical error handler – DIV/INTO exception on 3dfx Voodoo3. Full CPU context saved: EAX–ESP, DS/ES/FS/GS, EFLAGS, CS:IP. CS:IP = C000:2F63 – the crash occurred inside the graphics card BIOS ROM, not in X-VESA code.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DOWNLOAD
The beta is attached to this post as XVESA200.ZIP.
Archive contents:
X-VESA.COM – ExecutableX-VESA.TXT – Full documentation (English)PBM2PNG.EXE – IFF-PBM to PNG converterPBM2PNG.TXT – PBM2PNG documentationIPEREDID.COM – DOS TSR for multiple monitor EDID managementIPEREDID.TXT – IPEREDID documentation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ACKNOWLEDGMENTS
This project is dedicated to the memory of Prof. Mario Bruschi, my collaborator and friend, who didn't live to see it completed.
Thanks to the Vogons community, whose years of documented hardware experience, preserved software, and shared knowledge made this kind of work possible in the first place.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
X-VESA is freeware. Modification of the executable is not permitted. The documentation is an integral part of the distribution. The author disclaims all liability for damages caused by the use of X-VESA.
— Marco Pistella
mpistella@libero.it