patchsize should attempt to patch FreeCom build regardless of compiler that builds tool which may not match compiler that built exe being patched.
Recent Commits to freecom:master
-
patchsize should attempt to patch FreeCom build regardless of compile…
-
dir.c: allow 21.7303 to return NC, ax=0 to mean supported (EDR-DOS)
dir.c: allow 21.7303 to return NC, ax=0 to mean supported (EDR-DOS) EDR-DOS returns NC, AX = 0000h from 21.7303. This was incorrectly detected as "not supported" here. CF unchanged and AL = 00h is the typical error return, albeit CF unchanged AX unchanged has also been observed (on dosemu2 + lDOS + SRDISK). Reference on the correct "unsupported" return: https://sourceforge.net/p/freedos/mailman/message/59128382/ Incorrect interrupt list entry: https://fd.lod.bz/rbil/interrup/dos_kernel/217303.html
-
set CY before calling 21.71 or 21.73 DOS functions (LFN, FAT32)
set CY before calling 21.71 or 21.73 DOS functions (LFN, FAT32) Between the current lDOS kernel (which doesn't support 21.73), SRDISK, and dosemu2 revision 6a2f4f527 the return from 21.7303 somehow is with both Carry Flag and AX preserved. This makes the DIR command think that the call is supported when it isn't. The proper check is to call with CY set before the call.
-
increase size of heap from 6KB to 8KB
increase size of heap from 6KB to 8KB (size based on discussions on FreeDOS mailing list, TODO validate actual size used and see if can be semi-automated to ensure adjusted up or down as actually required)
-
loadhigh.c: put maximum array sizes in defines and check for overflow
loadhigh.c: put maximum array sizes in defines and check for overflow
-
loadhigh.c: no record UMB region if excluded UMCB is Z and empty
loadhigh.c: no record UMB region if excluded UMCB is Z and empty
-
loadhigh_prepare: support lDOS S MCB of type 30h (excluded UMA)
loadhigh_prepare: support lDOS S MCB of type 30h (excluded UMA)
-
loadhigh_prepare: accept empty MCBs (memory block size zero)
loadhigh_prepare: accept empty MCBs (memory block size zero) Broke LH on lDOS, reference: https://github.com/FDOS/freecom/issues/166
-
loadhigh_prepare: on MCB allocation error do not leak memory
loadhigh_prepare: on MCB allocation error do not leak memory
-
fix recursive remove dir
fix recursive remove dir
-
mcb_walk.c: try querying UMB link state even if not on DOS 5+
mcb_walk.c: try querying UMB link state even if not on DOS 5+ Current lMS-DOS still reports its version as v4.00 but does fully support a DOS-managed UMA. As of today lMS-DOS also supports the SHELLHIGH= directive. Like FreeDOS's this is implemented using the 21.4B80 extension. Although the internals differ, the outside observable behaviour is the DOS executable loader allocates both the environment and the process memory block into the UMA, if there are free UMBs. However, unlike LH the UMB link state is not enabled once the control flow is passed to the application. That means an environment block in a UMB isn't reachable when walking the MCBs without regard to proceeding past the first UMCB. The MCB walker is used in FreeCOM's init to validate the environment block passed to it upon its startup. Reference: https://github.com/FDOS/freecom/blob/cede733377c454cb93e9038d476582f0d1fcbf0a/shell/init.c#L238 If this check fails, then the shell will prompt for the position of its executable as follows. This patch makes the MCB walker enable the UMB link even if the reported DOS version is below 5, allowing it to find the environment block's UMCB and avoiding the prompt. Failed to load the strings resource into memory, the location pointed to in %COMSPEC% seems to be invalid. Please specify another location of FreeCOM to try to load the strings from, e.g.: C:\COMMAND.COM or just hit enter to cancel to load the strings.
-
ico files are binary, don't convert linefeeds
ico files are binary, don't convert linefeeds