Skip to content

Velocity9x 0.4.4

Choose a tag to compare

@michaeldale michaeldale released this 22 Aug 04:34
· 25 commits to main since this release

The S3 driver runs on a 486 with a Trio64 on VESA Local Bus, under Windows 95 — the first machine with no PCI bus at all.

What is new

Windows has nothing to enumerate on VESA Local Bus, so a PCI\VEN_ model can never bind. The s3 package now carries a second model with no hardware ID, pickable only by hand from Have Disk, which is Windows' own pattern for this — MSDISP.INF has eight such models. It advertises a 2 MiB-safe subset: the two rows the chips declare against 4 MiB and a 2 MB card cannot hold (16 bpp 1280x1024, 32 bpp 1024x768) are pruned before the install rather than refused at Enable, where the only symptom would be a black screen and a stage code.

Measured on the machine: enable-ok at 640x480x8, the linear aperture mapped at 0x7F000000, V9XHW.INI naming S3 Trio32/64 86C764 at 5333:8811 with 2 MB read from CR36 and the clock valid at 59.957 MHz.

Three bugs only that machine could expose

  • The chip-id read needed the extended-register locks open. identify_without_pci was the one S3 accessor in s3_regs16.c that did not unlock CR38/CR39, defended by a real measurement that generalised a single lock state into a rule. Under Windows the state differs and the rule is false: CR2D/CR2E read 5Ah/5Ah where DOS read 88h/11h. Those are read-only chip-id registers, so the locks were the only variable.

  • The manual-select model must name no mini-VDD. A Win9x display devnode is started by the VDD loading the mini-VDD named in DEFAULT\minivdd. Ours does not load on Win95 4.00.950, so the devnode never reached DN_STARTED, Device Manager reported Code 24 — "this device is not present" — Display Properties then offered no modes at all, and the desktop sat on the 4-bpp vga.drv fallback row. The driver underneath was working the whole time; it was simply never asked to enable. PCI models keep their mini-VDD.

  • Two AddReg lines were silently doing nothing, so the Velocity9x tab never appeared. Both key paths contain a space — Controls Folder and Shell Extensions — and Win95's SetupX will not parse an unquoted AddReg key path that does. It fails without a word: every other line of the same section applied. Both are now quoted, as Windows' own MSDISP.INF quotes the same key.

Also in this release

  • A driver that refuses every mode now says why. ValidateMode gates every mode on v9x_hardware_acceptable and recorded nothing when it said no — which is why the first of the three bugs above took a hand-loaded DRV, a registry export and a survey re-read to find. It now writes which condition refused, plus what the identify hook actually saw.
  • The VGA hardware survey at schema 2, which can identify an S3 with no PCI bus to scan. Released separately as survey-v2.

Verified

  • Physical 486, S3 Trio64 on VESA Local Bus, Windows 95 4.00.950 — the new path above.
  • Physical S3 Trio64 on PCI, Windows 98 SE — unchanged from 0.4.3.
  • 86Box Trio64 guest — full mode matrix, 11 of 11 modes enable-ok, GDI pass on every one, palette pass on all four 8-bpp modes.

Still an engineering bring-up driver, not a release driver. Read docs/INSTALL.md first, and see CHANGELOG.md for the full detail.