Good morning, I have published an updated (a) release of FreeCOM to address some shortcomings from the previous 0.85 release. https://github.com/FDOS/freecom/releases/tag/com085a As before, the release provides multiple variants with the recommendation to use one of the Open Watcom xms-swap versions. This release fixes a regression with IF ERRORLEVEL in the 0.85 release and a regression that prevented the debug builds from working. Other changes are documentation updates. I have included a portion of HISTORY.TXT below, alternatively you may refer to the full file ( https://github.com/FDOS/freecom/raw/master/docs/history.txt ) or git changelog ( https://github.com/FDOS/freecom/commits/master ) for more details.
The files with ow (or missing a prefix) are built with Open Watcom (default compiler), the files with bc are built with Borland C/C++ 3, and the files with gcc are built with GCC (ia16). Currently only xms-swap GCC (ia16) built version is provided, please see artifacts from automatic builds ( https://github.com/FDOS/freecom/actions ) for latest builds with GCC. [bc-]command.zip is a FreeDOS package for use with FreeDOS distributions, it includes full source - https://github.com/FDOS/freecom/releases/download/com085a/command.zip [bc-]freecom-source.zip is just the source from git but with file timestamps set to latest committed change for the file - https://github.com/FDOS/freecom/releases/download/com085a/freecom-source.zip For each language supported, a zip archive is provided with the following versions: xms-swap: FreeCOM with XMS swap support. The xms-swap files are recommended for computers with extended memory and an extended memory manager such as himem, as XMS memory is used for swapping. kswap: FreeCOM with kswap support. The kswap files provide basic swapping support. plainedt: FreeCOM without the command line editing enhancements (history, file completion). These are xms-swap variants. debug: the latest FreeCOM with debug information enabled. These are xms-swap variants. (The language specific versions are compiled for the specific language so the critical errors will also be translated if available. *** The system code page needs to be set to an appropriate setting for the language files to display correctly.) The * -localize.zip files ( https://github.com/FDOS/freecom/releases/download/com085a/ow-localize.zip ) are developer packages for translators (to help create new or maintaining existing * .LNG files), which includes compiled FreeCOM and precompiled strings (* .dat) for each language along with the source (* .lng) language files and fixstrings.exe used to generate new strings.dat file. The precompiled command.cln and xmsswap.cln uses English language for critical errors. As the included *.cln files do not have a language appended, run "copy /b command.cln + strings.lng command.com" to get a version with most strings in the language of your choice. The included command.com and xmsswap.com are in English. See included documentation for further details. If you are unsure which one to use, download either the command.zip (see link above) or ow-English.zip and use the xms-swap version. https://github.com/FDOS/freecom/releases/download/com085a/ow-English.zip The specific regressions were caused by: too many internal commands were setting the ERRORLEVEL value, so it was modified to limit which internal commands set ERRORLEVEL matching what other command shells do. I plan to document the possible values, but for now for supported internal commands, treat 0 as success and non-zero as error. For the debug builds, the required medium memory model (all other builds use small) changes the code to use far calls but some of the assembly files were using near returns [in NASM ret is the same as retn, we use a macro to convert it to retf in debug builds, the macro was not always included thus leaving ret as retn and in some places it was coded as retn not ret so the macro didn't have a chance to work], additionally the xms-swap variant needed to fixup the stack for a far return as the segment of the transient shell can change when returning from an external command (in these builds extended (XMS) memory is allocated and the transient portion copied there, then the DOS memory is released so can be used by external program, it returns and DOS memory is allocated again for the transient portion [this may or may not be at the same segment], a difference between old segment and new segment is calculated and this relocation factor is applied to specific fixup locations in the transient portion after copying back). Note: I have updated the ret fix to use the ret macro since the 0.85a release, it generates the same code but source now uses ret instead #if medium retf #else retn #endif used in the 0.85a release. The source archives provided (not the GitHub auto-generated ones) have the file timestamps set to the last commit date and time (not quite last modified, but should be within the same ballpark unlike last checkout date and time git normally does). Below is the information from HISTORY.TXT with an overview of all the changes, I have also included the changes for the 0.85 release; updating the documentation is the main change in this release - removing references to obsolete email addresses and links. If anyone is proficient in PERL and wants to look into the docs/html, that is the next major documentation to update - there is no documentation on how the scripts work to generate the html (some portions may need to be retrieved from old sources even) and although I have used PERL long time back, I am not by any means proficient in it. v0.85a ~~~~~ regression fix: ensure not setting errorlevel for all internal commands, exclude commands such IF FOR etc documentation update - merge/remove duplicate files, add history, general updates (links, email, etc) correct help for 'for' command, add %% escaping to printf so for command shows %a ... do ... %a instead of ?a ... do ... ?a use program exit code as errorlevel when using loadfix or loadhigh (unless error invoking program) compatibility improvement, don't print % when missing paired % on command lines (show 'somevar' not '%somevar') if COMSPEC isn't set, strdup an empty "" string instead of potential NULL pointer dereference add beginning of more comprehensive test batch file prevent debug builds crashing on startup, intr and lowexec needs to retf not retn for medium memory model builds (e.g.debug build) fix xms-swap debug build when returning from exec'd programs, fixup return segment and do a far return from xmsexec call v0.85 ~~~~~ From Kenneth J Davis support CMDLINE for command lines > 126 characters when invoking COMMAND.COM improve compatibility when executing external programs - from RBIL and other sources, the command line should end in just \r and if greater than 126 chars, the size byte should be 127 not actual size; still keep \0 if command line is short enough but allow 126 chars without terminating \0, set size to 127 if >126 misc batch file updates to aid in building multiple versions (languages/xmswap or not/compiler) support /E maxsize of 32768, FreeCOM documentation and MS/PC DOS command.com document max value as 32768, due to use of signed int FreeCOM max size was actually 32766; change argument processing to use unsigned int and support up to 32768 as argument git should ignore generated files add files to GitHub so http://www.fdos.org/freecom/ directs to GitHub hosted content From Andrew Bird fix build due to language keyword in strings file got renamed improve fixstrs compatibility with gcc-ia16 multiple build fixes for Linux due to case sensitive filenames muttiple fixes to avoid git encoding issues for translations slightly improved French translations from @cardpuncher fix so fixstrs does not segfault on incorrect input add the remaining translations to the CI build setup CI build on GitHub using GCC-ia16 and Open Watcom, multiple improvements to CI build remove duplicate translation the translation 'yu852' is identical to 'serbian' so remove it Update README - convert to Markdown, add build status badge, add links for Changes and Compile text documents fixstrs: Avoid sign extension of chars 128..255 - with GCC on Linux, cp850 char 0xa3 'Ăș' was being converted as 0xffffffa3, so be explicit about signedness and size of the parameter. fixstrs: fix invalid escape chars fixstrs: initialise version number, strupr should return the pointer passed in - fixes gcc warnings fixstrs: rename log variable - fix declaration mismatch build: Copy default file if config missing From lpproj dbcs fork add nls fallback, fix for running on DOS kernels that lack the nls API used Add build option `upx' to build a compressed execuable alias watcom=wc in build script Fix chcp report wrong codepage on old DOS before v3.30 (and v3.30 for NEC PC-9800 series) From p-durlej fork CLS: Use appropriate attribute values for common display modes. DIR: Fix DIR /O /W not putting newline before the summary. TYPE: Fix file open error handling TYPE: Fix partial read handling displayPrompt: prevent $P from being intermixed with INT 24H and phantom drive messages DEL: Fix printing the directory path when deleting all files From Jason Pittman Fix for multi-line commands in history, properly wrap and clear lines From Bart Oldeman Update French translation (corrected some grammatical errors) Add some more GCC options to reduce the size of command.com. Add comment about MinGW. From Sampo HippelĂ€inen better GOTO help translation improve/add Finnish translation From Emir Sari Fix typo Improve Turkish translations - fixes ambiguities and overall improves current translations From Francesco Sacco allow internal commands set the ERRORLEVEL Minor fixes for pt-br. From ghderty Translations: Update russian translation From Darrin M. Gorski Allow non-permanent instances to exit with the last errorlevel instead of zero. Please feel free to provide constructive criticism for future improvements (non-polite or similar comments will be ignored and the commenters future messages sent straight to trash). Please file bug reports to FreeDOS ticket tracker at https://sourceforge.net/p/freedos/bugs/ or to the FreeCOM specific issue tracker https://github.com/FDOS/freecom/issues and as always issues can be brought up on list (but please also consider adding a bug report to ensure the issue is tracked and not lost in a sea of emails). Thank you, Kenneth J. Davis https://github.com/FDOS/freecom _______________________________________________ Freedos-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freedos-devel
