Skip to content

Open 386MAX 8.57

Choose a tag to compare

@geosone geosone released this 16 Oct 18:58
· 117 commits to main since this release

Open 386MAX 8.57, English (US) and German (GR).

8.x is now the maintenance line: bug fixes only. New features go into 9.x.

Bug fixes (from the 9.x work, found or confirmed with the new regression suite)

  • A DPMI client that faults without its own handler is terminated with a short report, and DOS continues (as with CWSDPMI and HDPMI). The machine no longer stops at a full-screen message. BOUND and coprocessor-not-available faults no longer loop.
  • DPMI clients can no longer write the page tables. A client with a broken stack crashed the machine.
  • EMS mapping contexts (functions 4Eh and 5Bh) are checked. Bad contexts hung the machine.
  • INT 31h 0300h leaves the CS:IP of the caller's structure alone.
  • INT 21h 440Dh/440Ch subfunctions without a translation are passed through. This includes the DOS 7 volume lock before INT 26h. It used to hang EDR-DOS and MS-DOS 7.1 and corrupt DOS memory on FreeDOS.
  • Deeply nested DPMI clients no longer run the ring 0 stack into the tables below it.
  • An XMS allocation by a DPMI client works. It failed with A0h, and VSBHDA reported "DMA buffer init failed".
  • Starting a nested DPMI client no longer leaves a selector in the parent's LDT.
  • A DPMI client that set an INT 33h 000Ch mouse handler and exits without a mouse reset no longer leaves the mouse driver calling freed memory.
  • 386LOAD.COM uses the kernel's UMB chain on FreeDOS with DOS=UMB.

Regression tests

The source now contains the regression suite (TESTS/, linux/test/suite.py). It covers XMS, EMS, VCPI, VDS, V86 and DPMI, and every test passes on MS-DOS 6.22 and 7.1, Enhanced DR-DOS, SvarDOS and FreeDOS 1.4. Installation from the floppy disks was tested in QEMU in English and German.