This project aims to allow some programs written for later versions of 16-bit Windows to run on earlier versions.
- Add support for LB_SETITEMDATA and LB_GETITEMDATA messages
- A computer or virtual machine running some variant of DOS, preferably MS-DOS 3.30 or similar
- Microsoft Macro Assembler 4.0 (later versions may work)
- Microsoft C 5.1
- Windows 2.x SDK/OAK
- Environment variables:
INCLUDE
: Path to folder withWINDOWS.H
andCMACROS.INC
LIB
: Path to folder withSLIBW.LIB
PATH
: Contains the folders withCOMMAND.COM
,MASM.EXE
,CL.EXE
,LINK4.EXE
, andMAKE.EXE
- The current directory should be the one containing the source files
- To build:
MAKE KEX16
- To delete built files:
MAKE CLEAN
While there is no single procedure for adding support for an API function to KEX16, the general steps are as follows:
- Implement the new API function (usually done in a new source file)
- Add a check/flag in OSFlags (to turn it off on platforms where it's not needed)
- Edit the common code (KEX16.C) to add the API function to Windows
Currently, this project is focused on making programs built for Windows 3.0 run on 2.x. The below additions are in pursuit of that goal. However, if there are new API additions that would increase compatibility with Windows 1.0 or 3.1 applications, those are also welcome.
- Modification of resources on module load to accommodate Windows 2.x's resource format
- MDI support APIs
.gitignore
: Tells git not to include output filesREADME.MD
: This documentationLICENSE
: MIT LicenseKEX16
: Makefile for buildingCLEAN
: Makefile for removing built filesKEX16.DEF
: Defines exports and executable propertiesKEX16.H
: Definitions used by multiple source filesKEX16.C
: Common setup and dispatch codeOSFLAGS.C
: Detects underlying OS capabilitiesLLIST.ASM
: Linked list support routinesWINHOOK.ASM
: Routines to hook existing Windows API functionsONLOAD.C
: Modifies modules as they are loaded to ensure compatibilityLBITEM.C
: Support for LB_SETITEMDATA and LB_GETITEMDATA messages