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

Reply via email to