Repository navigation
Releases: geosone/Open386MAX
Release list
Open 386MAX 9.00-beta1
Open 386MAX 9.00-beta1, English (US) and German (GR).
A test release of the 9.x development line, not for production use. The programs report version 9.00. Everything below was tested in QEMU only; this beta is for tests on real hardware. The 8.x line (8.58) keeps getting bug fixes on the 8.x branch.
All bug fixes of 8.56–8.58 are included.
New in 9.x
- QEMM programming interface (QPI): the functions DESQview, SBEMU and VSBHDA use on QEMM 97. These are port trapping, mapping contexts, IRQ calldowns, timer channel 0, CRTC/DAC trapping and cursor callbacks, VIDRAM, and protection levels. 386MAX answers QEMM's installation check, so programs that require QEMM find it.
- DESQview 2.80 runs on 386MAX in its QEMM mode. The test covers windows running in the background, COM1 send and receive by IRQ (a BBS node in a background window), Memory Status, and the regression tests inside a window, and 386MAX does at least as well as QEMM 97. Fixed in this test: HLT in a DESQview window stopped that window's clock.
- DPMI host:
- an HDPMI-compatible vendor API, with port traps in protected mode and shared contexts;
- translation of long file names (71xx), FAT32 (73xx) and more DOS calls;
- absolute disk I/O from protected mode;
- INT 33h mouse translation;
- clean ESP on 16-bit stacks;
- linear memory at 4MB for HX PE programs;
- DOS/4GW works together with VSBHDA.
- XMS 3.5: RAM above 4GB as super-extended memory, moves above 4GB through INT 15h AH=87h, and 386DISK /XMSSX for a RAM disk up there.
- Large RAM: by default 386MAX maps at most 2GB−64MB. It warns when EXTSIZE= is set higher, and the new LOWDPMI= keyword is available.
- Modern machines:
- The UMA of a UEFI CSM and the free option ROM space of a CSM are used as free shadow DRAM (386MAX, MAXIMIZE, ASQ).
- One host bridge table (SHADOWRAM.TXT) describes shadow RAM: Intel PAM, and AMD fixed MTRRs from K8 to Zen 5.
- Setup:
- Unattended installation with SETUP.INF (SETUPDOS, SETUP, MAXIMIZE, WINMAXIM), edited with MAXCFG.
- A RAM disk for TEMP (386DISK with RAMTEMP).
- Startup files per DOS: FDCONFIG.SYS and DCONFIG.SYS, and the batch file named to COMMAND.COM.
- ASQ for Windows (WINASQ): views ASQ snapshots, takes a new snapshot from Windows, and shows a graphical map of the first megabyte. Under Windows 9x it also shows device memory and checks it against the map for conflicts.
- Open MaxView backend discovery API.
- Tests: a regression suite of about 50 test programs runs under 386MAX, EMM386, JEMM, HDPMI, CWSDPMI and QEMM 97 on MS-DOS 6.22/7.1, FreeDOS, DR DOS and SvarDOS. There are also 386MAX.PRO keyword tests and the DESQview test.
Testing on real hardware: please report
- the machine (chipset/CPU, RAM size, BIOS or UEFI CSM), the DOS, and CONFIG.SYS/386MAX.PRO;
- whether 386MAX loads, how much upper memory it finds (386UTIL, ASQ), and whether MAXIMIZE completes;
- DESQview, Windows 3.1/9x, DOS extenders (DOS/4GW, HX, DJGPP), and sound with VSBHDA/SBEMU;
- on a hang or crash: a photo of the last screen.
Media: as in 8.58. Disk 1 has the installers (SETUPDOS.EXE for DOS, SETUP.EXE for Windows). The USB image (FAT16) and the CD image hold everything in \INSTALL. None of the media is bootable.
Open 386MAX 8.58
Open 386MAX 8.58, English (US) and German (GR).
A maintenance release of the 8.x line: bug fixes from the 9.x work, each with a test in the regression suite.
Bug fixes
- XMS 01h/02h now mark the HMA as used in all copies of 386MAX's data. 386UTIL and MAXIMIZE read those copies and never saw DOS in the HMA.
- On 486 and later CPUs, the FPU was mistaken for a Cyrix EMC87 and a Weitek coprocessor was reported. 386UTIL WEITEK=ON then hung the machine with DOS=HIGH. The EMC87 check now runs on a 386 only. Weitek and EMC87 support stays for old hardware.
- Port 92h is trapped on every machine. FORCEA20 is now the default; UNSHIFT turns it off. A program that turned A20 off through port 92h or the keyboard controller turned off the real A20 line under paging and crashed.
- INT 15h 2400h/2401h (A20 off/on) did nothing, and 2402h reported the A20 state the wrong way round.
- INT 15h E801h and E820h report only the memory 88h leaves to INT 15h clients. The rest is marked reserved. The BIOS answers showed 386MAX's own memory as free, and a program that trusted them could overwrite it.
- Without 64KB free above 640KB, the EMS page frame went into conventional memory, and MS-DOS 6.22 hung after 386MAX. 386MAX now installs without a page frame (as with NOFRAME) and says so.
- XMS 11h/12h free or resize only UMBs from XMS 10h, not any DOS memory block. XMS 10h returns DX=0 with error B1h.
- EMS 5201h (make a handle volatile) failed with 91h.
- Nested DPMI real-mode callbacks are refused with 8012h when the ring 0 stack runs low. About 70 levels used to corrupt the memory tables. 386MAX's own DOS translation keeps its reserve, so HX RMCB8 unwinds cleanly.
- VCPI with about 1GB of RAM or more: DE01h wrote past the client's page table buffer (HDPMI said "insufficient memory" and DOS memory was broken). Now DE01h fails with 84h if 386MAX doesn't fit, and EXTSIZE defaults to at most 896MB, with a warning above that. DE05h freed DE04h pages again from 512MB on.
- STRIPMGR found no section in an MS-DOS 6 multi-configuration CONFIG.SYS ([MENU] ... [NORMAL]), so HIMEM.SYS stayed after 386MAX in the active section. The cause was a compiler register assumption in the small model; STRIPMGR, BATPROC and SNAPSHOT are rebuilt.
- SETUPDOS, MAXIMIZE, STRIPMGR and ASQ work on the files the running DOS reads: FDCONFIG.SYS on FreeDOS, DCONFIG.SYS on DR DOS, and the startup batch file given to COMMAND.COM (/K on MS-DOS, /P=file or /P:file with FreeCOM such as FDAUTO.BAT, /P:file on DR DOS such as AUTODOS7.BAT). Before, they changed CONFIG.SYS and AUTOEXEC.BAT, which these systems didn't run.
- STRIPMGR recognizes the FreeDOS and DR DOS line prefixes (1?DEVICE=, !DEVICE=, ?DEVICE=) and the FreeDOS memory managers HIMEMX, HIMEMSX, JEMMEX and JEMM386. They used to stay in CONFIG.SYS before 386MAX.
- ASQ (and MAXIMIZE without 386MAX) no longer writes test patterns into the system ROM area. Under UEFI with CSMWrap it is RAM, and the CSM's BIOS proxy crashed.
Regression tests
New tests: V86/A20, MAX/MAXINFO, MAX/UTIL (386UTIL with all switches), MAX/UMBDOS, MAX/HMADOS, XMS/XMSUMB, XMS/XMSLOCK, EMS/EMSMORE, DPMI/RMCBNEST, DPMI/PMSTACK, DPMI/CALLGATE, DPMI/NULLSEG, DPMI/LINOOM, DPMI/MANYSEL, DPMI/DPMILEAK, DPMI/DPMIMISC, DPMI/MAXAPI. V86/INT15 and VCPI/VCPIFUNC were extended. Under 386MAX every test passes on MS-DOS 6.22 and 7.1, Enhanced DR-DOS, SvarDOS and FreeDOS.
Installation from the floppy disks was tested in QEMU in English and German.
Open 386MAX 8.57
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.
Open 386MAX 8.56
Open 386MAX 8.56, English (US) and German (GR).
Waits ten times too long
Since the build moved to OpenWatcom, every timed wait of the DOS programs (SETUP, MAXIMIZE, ASQ and the other programs with the Qualitas user interface) lasted ten times as long as intended: the time was read in clock ticks, of which OpenWatcom counts 100 per second where Microsoft C counted 1000. Examples: the MAXIMIZE logo stood 25 seconds instead of 2.5, an Express Maximize phase waited 50 seconds instead of 5 at its end, and MAXIMIZE /T (accept the default after a timeout) waited 5 minutes instead of 30 seconds.
No other changes since 8.55.
Tested in QEMU with complete installations and Maximize: MS-DOS 6.22, MS-DOS 7.1, Enhanced DR-DOS, FreeDOS 1.4, Windows for Workgroups 3.11 and Windows 98 SE.
Files: per language a 1.44 MB floppy set (disk1, disk2), a 32 MB USB image, an ISO and a ZIP; SHA256SUMS.
Open 386MAX 8.55
Open 386MAX 8.55, English (US) and German (GR).
FreeDOS and Enhanced DR-DOS
This release makes Open 386MAX work on the FreeDOS kernel (FreeDOS 1.4) and improves it on the Enhanced DR-DOS kernel (also used by SvarDOS). Installation and Maximize now run through on both.
- 386LOAD.SYS hung the FreeDOS kernel after CONFIG.SYS as soon as a driver was loaded through it (what Maximize does). FreeDOS reserves a driver's memory only at the last header of the driver file; 386LOAD's own header was overwritten and the driver chain broke.
- After a warm boot (Ctrl+Alt+Del) the FreeDOS kernel could not use the HMA under 386MAX ("HMA can't be enabled"). The kernel leaves a dummy VDISK record in the HMA, and 386MAX took it for a real RAM disk. A VDISK now counts only if INT 19h points to it as well.
- FreeDOS with DOS=UMB: 386MAX and the kernel both reserved a paragraph for the link to upper memory, which left a gap in the memory chain ("UMB Corruption"). 386MAX now leaves the link to the kernel there, as on MS-DOS with DOS=UMB.
- Maximize on DR DOS kernels does what ExtraDOS does on MS-DOS with the kernel's own statements: HIFILES=, HIBUFFERS=, HIFCBS=, HILASTDRIVE=, HISTACKS=, DOSDATA=UMB and DDSCS=HIGH,UMB (measured after Maximize on SvarDOS: 582 KB free instead of 576 KB). On FreeDOS it uses 386LOAD only: the kernel's FILESHIGH= etc. need DOS=UMB, which takes all upper memory.
- EXTRADOS.MAX no longer stops the boot on these kernels with "Unrecognized version of DOS. Press any key"; it notes that the kernel does this job itself.
All systems
- Maximize could abort in phase 3 with "Memory allocation error in get_mem for 0 bytes" and restore the old configuration (a leftover of the move to OpenWatcom, whose malloc(0) returns no memory).
Tested in QEMU with complete installations and Maximize: MS-DOS 6.22, MS-DOS 7.1, Enhanced DR-DOS, FreeDOS 1.4 (with CD driver, SHSUCDX and DOSLFN loaded high), Windows for Workgroups 3.11 and Windows 98 SE.
Files: per language a 1.44 MB floppy set (disk1, disk2), a 32 MB USB image, an ISO and a ZIP; SHA256SUMS.
Open 386MAX 8.54
Open 386MAX 8.54, English (US) and German (GR).
No more Microsoft Foundation Classes
Windows Maximize (WINMAXIM.EXE) was the last program that needed MFC 2.5, the class library of Microsoft Visual C++ 1.5x, and so a Microsoft CD to build it. It is now written directly for the Windows API like all other Windows programs of Open 386MAX. The whole package builds from open sources with OpenWatcom, JWasm and jwlink.
- Same dialogs (English and German), same steps: splash screen, welcome, MultiConfig section, Express/Custom, options, exit Windows and run MAXIMIZE; after Maximize the summary on the blue background.
- WINMAXIM.EXE is smaller: 135 KB instead of 228 KB.
- Build:
linux/mfcand the MFC build mode are gone;makealways builds WINMAXIM.
Tested in QEMU with complete installations (Windows SETUP, Maximize from WINMAXIM, all reboots, summary): Windows for Workgroups 3.11 and Windows 98 SE. The DOS programs and installers are unchanged since 8.53.
Files: per language a 1.44 MB floppy set (disk1, disk2), a 32 MB USB image, an ISO and a ZIP; SHA256SUMS.
Open 386MAX 8.53
Open 386MAX 8.53, English (US) and German (GR).
Tested in QEMU with complete DOS and Windows installations and all three MAXIMIZE passes: MS-DOS 6.22, MS-DOS 7.1, Enhanced DR-DOS, SvarDOS, Windows for Workgroups 3.11, Windows 98 SE.
Windows 98 SE
- Windows SETUP crashed right after creating the program directory: the CTL3DV2.DLL version check read the version data without its NULL check and after freeing it (Windows 98 has its own CTL3DV2.DLL).
- After MAXIMIZE, Windows 98 hung at the first start: WINLNCH (the DOS part of WINMAXIM, started by
winmaxim /summaryin AUTOEXEC.BAT) put its stack outside the memory it copies to the top of DOS memory.
DOS
- MAXIMIZE phase 2 crashed on MS-DOS 6.22 (and probably caused the "A20 hardware error" on MS-DOS 7.1): a debug breakpoint (INT 1) ran unconditionally because of a macro in the build's compatibility header.
- SETUP could overwrite its own stack when a CONFIG.SYS line was empty after removing a comment (strtok now behaves like Microsoft C).
- Installers: UMB is removed from
DOS=; on MS-DOS 7 (Windows 9x DOS)NOAUTOis added so DOS does not load HIMEM.SYS next to 386MAX, plus IFSHLP.SYS. Not on the DR-DOS and FreeDOS kernels, which report version 7 too. - No COMMAND.COM reload path in
SHELL=on DR-DOS/FreeDOS kernels (SvarDOS' shell rejects it). - MAXIMIZE detects Enhanced DR-DOS, SvarDOS and FreeDOS and leaves out ExtraDOS there; its reboot switches A20 off and resets through the keyboard controller.
Branding
- Boot banner box ends with "GNU General Public License version 3"; new setup splash bitmap; German "Ja" hot key fixed.
Files: per language a 1.44 MB floppy set (disk1, disk2), a 32 MB USB image, an ISO and a ZIP; SHA256SUMS.
Open 386MAX 8.52
Open 386MAX 8.52, English (US) and German (GR).
Fixes
- MAXIMIZE: its data plus stack exceeded 64 KB; the stack wrapped around and part of its memory was given back to DOS while still in use (also in 8.50 and 8.51). A 2 KB array existed six times. The build now checks every DOS program for this at link time.
ASQ: newer hardware
- Memory → BIOS map: the BIOS memory map (INT 15h E820h) with size and type of each range, free memory below/above 1 MB, the areas below 1 MB the BIOS reserves.
- Equipment → PCI devices: every PCI device with vendor, kind of device, IRQ, I/O and memory ranges; the option ROMs in C0000-EFFFF and the device each one belongs to.
- Equipment → Firmware/CPU: processor (CPUID name, family/model, 64-bit, virtual machine, features), SMBIOS (BIOS, system, mainboard, memory modules), ACPI tables.
- Equipment summary: the real processor name, correct family/model for newer CPUs, computer type "64-bit PC".
- Snapshots store the new data; unknown snapshot entries are skipped.
Other
- Version information of the Windows programs: company "Open 386MAX", DOSMAX32.DLL has the product version.
- The version number lives in one file (
VERSION).
Media (per language): -disk1.img, -disk2.img (1.44 MB floppies, run SETUPDOS from disk 1), -usb.img (FAT16 with \INSTALL), .iso, .zip.
Tested in QEMU: floppy installation (US, GR), ASQ (i440FX and Q35 machines, snapshots), Windows for Workgroups 3.11 enhanced mode with 386MAX.SYS. Not yet tested: a complete MAXIMIZE run, Windows 9x.
SHA-256 checksums: SHA256SUMS.
Open 386MAX 8.51
Open 386MAX 8.51, English (US) and German (GR).
Fixes
- Windows 3.1x/9x 386 enhanced mode works again: in 8.50, 386MAX.VXD aborted every Windows start with "V1020: 386MAX.SYS Version Mismatch" (version check compared BCD with binary; it broke once the minor version reached 10).
Fully open source now
- 386MAX.VXD: own LoadHi device frame (
VXD/LOADHI.ASM) instead of the binary-only Microsoft LoadHi objects. Windows 3.1 or later is required for enhanced mode; Windows 3.0 enhanced mode is refused with a message. - Own headers instead of the Microsoft SDK/DDK files (
VMM.INC,VDD.INC,SHELL.INC,DOSMGR.INC,SMARTDRV.INC,WINDOWS.INC,VER.H,COMMON.VER,PIF95.H,W32SUT.H). - No prebuilt objects or programs left in the tree: SETEWV start-up code, the DOS stubs of QPIFEDIT/QPOPUP and PIFMGR.LIB are built from source.
Media (per language)
-disk1.img,-disk2.img: 1.44 MB installation floppies (boot DOS, runSETUPDOSfrom disk 1)-usb.img: FAT16 image with\INSTALL(both parts in one directory, no disk change).iso: CD image with\INSTALL.zip: the installation files
Tested in QEMU: floppy installation (US, GR) with MAXIMIZE, Windows for Workgroups 3.11 enhanced mode with 386MAX.SYS (MAXMETER, ASQ in a DOS window). Not tested: Windows 9x.
SHA-256 checksums: SHA256SUMS.
Open 386MAX 8.50
Open 386MAX 8.50 – the GPL 386MAX memory manager, built entirely with open-source tools (JWasm/JWlink, OpenWatcom) from this repository.
Downloads (one build per language: US English, GR German)
| Media | English | German |
|---|---|---|
| 1.44 MB floppy set (disk 1 = installers + 386MAX.1, disk 2 = 386MAX.2) | open386max-8.50-us-disk1.img, -disk2.img |
open386max-8.50-gr-disk1.img, -disk2.img |
USB stick image (32 MB, FAT16, files in \INSTALL) |
open386max-8.50-us-usb.img |
open386max-8.50-gr-usb.img |
CD image (files in \INSTALL) |
open386max-8.50-us.iso |
open386max-8.50-gr.iso |
| All installation files | open386max-8.50-us.zip |
open386max-8.50-gr.zip |
The media contain no DOS and are not bootable (no Microsoft files may be distributed). Boot your own DOS, then run SETUPDOS (DOS) or SETUP.EXE (Windows 3.1x/9x) from the floppy, \INSTALL on USB/CD, or the unpacked ZIP. Installing from floppies asks for disk 2; from USB/CD/ZIP both parts are in one directory and no disk change is needed.
What's new
- Runs on modern hardware: chipset shadow RAM (PAM/MTRR), E820/E801 reserved areas (AHCI, EBDA, ACPI), more than 256 MB RAM, ISA DMA above 16 MB
- QEMM QPI port trapping API for SBEMU/VSBHDA
- No serial numbers or registration; GPL v3 license shown during setup (LICENSE.TXT)
- All formerly binary-only parts are new GPL code: MAX shell (MAX.EXE), help engine and compilers, DOS WinHelp reader, CTL3DV2.DLL, SFTTABS.DLL, RDOSMAX
- New "Open 386MAX" logo, version 8.50
Tested in QEMU: floppy and USB installation (English and German), 386MAX boot, MAX/ASQ/MAXIMIZE, Windows for Workgroups 3.11 setup and tools.
(C) Copyright 1987-97 Qualitas, Inc. – Open 386MAX contributors 2022-2026, GNU General Public License version 3.
SHA-256
e70f4ada13a5cec3269794fa17b8d74a8745992374a4230cb04a5afc2196747c open386max-8.50-us-disk1.img
bfb4a89a9ecaada9541edde1382896323671f1a143c58b6655743e56658f0fad open386max-8.50-us-disk2.img
8fb6685881f0a46caac727e19d33fea7028b5c9d415d8638318ba4daa0435705 open386max-8.50-us.iso
100259c5feb6e2381c24b19921293e8dfc4010ca4f83acd08b016b45f95432ba open386max-8.50-us-usb.img
8e9d320661b96a91613e0d918c84d1ca8928e9812d7caa4a700beeea3b7e9215 open386max-8.50-us.zip
c0286eb1e8eca1b56703d1ddd0566fd2815a669505ede36a5c15cce213cab626 open386max-8.50-gr-disk1.img
58b2631f3295594571501db20b2fc60f47d0770b149dbae0ef93bc3960b3555d open386max-8.50-gr-disk2.img
e2bccb8ce9642bbcf1b22244ad5c7f5f068aeee54a50ccfad410167c5316f135 open386max-8.50-gr.iso
21e4e27aad3b140adcf5fc273b3d27e660be17ddf8d13a075d71f1279145034d open386max-8.50-gr-usb.img
486b4868eb1e89327afdd6b3961543944b5528619e9d5e6a553005b29b862c8b open386max-8.50-gr.zip