← All spotlightsPrograms / Features

Spotlight › VESA

Banked VBE desktop

Up to 1024x768, with 8-bit or 16-bit framebuffer output through VESA.DRV.

PiXEL at 1024x768
The os8088 desktop at 1024 by 768. A PiXEL window nearly fills it, showing a photograph of the Chicago skyline at dusk at twice its size, in smooth blues and oranges. The menu bar runs across the top, the drive icons sit at the right edge and the status bar reads 200% and 256 colors.
PiXEL using native framebuffer output.
Maximum resolution
1024 x 768
RGB565 colour range
65,536 colours
Fill bank-switch overhead
0.2%

01 / Supported VBE modes

Supported VBE modes

VESA.DRV enumerates VBE 1.2-or-later modes and keeps supported geometries/depths within its configured limits. It does not support every card that advertises a VESA BIOS. The interface reference is the VBE Core Functions specification.

The driver uses banked framebuffer access rather than a linear framebuffer. Scanline writes switch banks only when required by the reported window layout.

The 1024x768 desktop
The os8088 desktop at 1024 by 768 in its usual black and white. A Disk window lists all 24 files in the APPS folder of drive B. A Fractal window shows a Mandelbrot set in bright colours. A Calculator and a Note Pad window, reading The same desktop, on a screen of 1024 by 768, sit at the right, with room to spare below them.
1024x768 desktop.

Banked framebuffer

One 64 KiB CPU window onto video memory

640 x 480 x 1 byte = 307,200 bytes / 5 windows

CPU A0000-AFFFFWindow AVRAM 000000-00FFFF / page 0
Framebuffer arithmetic assumes tightly packed rows; a partial final page is hatched. VESA.DRV accepts a 64KB A000h window and uses the BIOS-reported bank granularity. Driver and mode filters.

02 / Desktop and native pixels

Desktop and native pixels

Desktop API colours remain indices 0-15. The driver maps them into the selected framebuffer representation. A separate native-pixel path lets PiXEL submit data already in that representation.

On the 16-bit path, PiXEL can preserve the colours of its indexed working image without desktop dithering. The 8-bit desktop path retains the palette-sharing limitation documented by the driver.

On the VESA screen
The Chicago skyline at dusk as PiXEL draws it on a 65,536-colour screen: a smooth blue sky shading to orange at the horizon, lit towers and reflections on the river.
Indexed source palette submitted to the 16-bit path.
On the VGA
The same skyline drawn on the 640 by 480 VGA desktop in sixteen colours: the sky is bands of dotted blue and green, and the city is a speckle of orange, red and grey dots.
The same crop dithered through the VGA desktop path.

03 / Desktop captures

Desktop captures

Drivers
The Control Panel's Drivers page: USB Mouse, EMS and CD-ROM unticked and Not loaded, and VESA Display ticked and Loaded, about 8K.
Driver attachment.
Display
The Control Panel's Display page listing three choices: Vga 640x480, Cga 640x200 and Vesa 1024x768x16, with the Vesa row selected, a Set Primary button and a Force Color box.
Mode selection.
Solitaire
A Solitaire window with a green table, red hearts and diamonds and a blue card back, opened in the middle of the 1024 by 768 desktop with plenty of empty desktop around it.
Solitaire using desktop palette indices.
Gorillas
A game of Gorillas in a window at the top left of the 1024 by 768 desktop: two gorillas on coloured buildings under a blue sky and a smiling sun, with the angle, velocity, score and wind across the top.
Gorillas window on the VBE desktop.

04 / Driver dispatch and bank cost

Driver dispatch and bank cost

The core dispatches drawing to the loaded display driver when active; the VBE implementation remains outside the resident kernel. The recorded core support cost is 942 bytes. Cursor save-under storage is driver-owned, and BIOS bank calls require a larger interrupt-stack allowance.

On the recorded 86Box 486DX2/66 with Cirrus CL-GD5428, a bank switch took 7 microseconds. A 624x200 fill took 23.3 ms across seven switches: banking was approximately 0.2% of that case. Those figures do not generalise to an arbitrary VBE BIOS or physical card.

05 / Mode and lifecycle limits

Mode and lifecycle limits

No 24/32-bit output and no desktop above 1024x768 in this build. Hibernate and extended dual-display operation are disabled while VESA is primary. The 128KB build omits it.

Validation covers QEMU and the specified 86Box card; physical-card and 15-bit-mode coverage remain absent. The driver's CPU coding floor is separate from the availability and BIOS behaviour of a particular adapter.

06 / Enable VESA.DRV

Enable VESA.DRV

Attach VESA Display from Control Panel > Drivers. The Display page cycles through accepted modes and stores the selection. Use a mode ending in x16 for PiXEL's native 16-bit path; the supplied QEMU and 86Box recipes reproduce the captures.

qemu-system-i386 -machine pc,vmport=off \
  -drive file=os8088.img,format=raw,if=floppy -boot a \
  -drive file=apps.img,format=raw,if=floppy,index=1 \
  -chardev msmouse,id=m0 -serial chardev:m0