Please enable JavaScript to view this site.

A-Shell Development History

1175.7.1

STATIC variable initialization bug: programs and subroutines (RUN/LIT/SBX) using 5.1 extensions (with RUN header 0xF1F6 or 0xF176, generally due to the use of dynamic variables) were not reinitializing the STATIC variables when the program was loaded via XCALL AMOS or XCALL (SBX) and then called a second time.

1175.7.2

Max length of passwords encrypted with MX_PWCRYPT increased from 24 to 128.

1175.6.1

XTREE bug fix: sorting of date columns that include a time as well as a date was not properly handling the time when the date contained CCYY instead of just YY.

1175.6.1

XTREE bug fix: the click position on an inactive tree was not properly overriding the xtr'targetrow value when that tree became active.

1175.5.1

GUI enhancement: MBF_AUTOGROW is now compatible with MBF_RTJUST. Control is anchored on the right side by the ecol value, and then grows to the left as needed to fit the text.

1175.5.2

GUI refinement: MBF_AUTOGROW now allows a few extra pixels on the right for left-justified controls using italics (otherwise the upper right corner of the last character was getting truncated due to the italic overhang.)

1175.5.3

GUI fix: MBF_DIM was not working as advertised with MBF_STATIC+MBF_FRAME.

1175.5.4

MX_DEFTABXYZ (for defining 3D tab effects) now includes the follow new ptype codes:

Value

Meaning

T[

like TL but shrinks control to just fit the text

T]

like T[ but right justified

D[

like DL but shrinks control to just fit the text

D]

like DR but right justified

 

Also, RGB values are now supported in the fgc and bgc parameters. (Previously only palette codes and -1 and -2 were allowed.)

1175.5.5

READ statement (for reading DATA) now supports &h (hex) and &o (octal) values.

1175.5.6

GDI printing bug fix: The landscape switch (32768), when passed to XCALL SPOOL or EZSPL, was not overriding an ORIENTATION=PORTRAIT statement in the printer init file.

1175.5.7

XTREE accessibility refinement: A left click anywhere within a checkbox or radio button CELL is now treated as equivalent to a click right on the checkbox or radio button bulls eye.

1175.5.8

GUI text transparency refinement: Text controls (created with BGC = -2) now assume the background color of underlying colored regions (such as MBF_FRAME and other MBF_STATIC controls), not just dialogs and the main window background.

1175.5.9

More improved compatibility with non-English language configurations. Font selection now reverts to requesting the default character set if the requested font face cannot be selected using the previously set character set (i.e. OEM or ANSI). This solves a problem in which fonts selected from the font dialog wouldn't "stick".

1175.4

Improved compatibility with Asian language configurations. When Windows is configured to support some Asian languages, the chr(250) used in the virtual function code sequence may get re-mapped to 255. Either value is now supported. (Otherwise, it may have been impossible to click on any controls.)

1175.3.1

Bug fix (affecting UNIX only): reducing the size of a dynamic buffer was generating a segmentation fault. (This is rare operation; the only known case was in XTREE file mode where the FILIDX parameter was passed.) The problem was introduced in 1174.8.

1175.3.2

PAD$(expr,len) function refinement: increase the maximum supported length of the resulting string from 257 to 4K bytes

1175.3.3

FILL$(expr,len) function refinement: test for sufficient string stack space before completing operation, to allow a cleaner error recovery when the specified len is greater than the available memory in the partition. Previously, A-Shell may have crashed before the error was trapped.

1175.2

ATE bug fix: close a loophole causing an GPF on the server side when the XDEBUG and ATE or KBD traces were active and certain XTREE events occurred.

1175.1.1

File hook bug fix: the WRITE hooks were sometimes failing to fire because of confusion with the WRITEL hooks. (WRITE operations may internally be changed into WRITEL depending on locking status.) As a general rule, if you want to hook write operations, you should set both the HFE_xxx_WRITE and HFE_xxx_WRITEL flags.

1175.1.2

XLOCK/FLOCK refinement under Windows: When gaining exclusive access to QFLOCK.SYS (which each XLOCK/FLOCK operation must do while it scans the queue), we now use an alternate Windows locking mechanism which waits internally for the resource to become available. Previously, we used a function that returned a failure code if the resource was in use, and then we implemented the wait operation by sleeping for a randomized number of jiffies and then retrying. While the old system had the advantage of making it easy to ^C out of the wait, it had the disadvantage of effectively allowing heavy users of the resource to completely crowd out light users. The new scheme is much closer to first come first served. (The QFLOCK.SYS table should never be locked for longer than it takes to scan the queue blocks, so in theory, you should never have to wait for more than an instant.)

Note: this enhancement does not affect the "C" version, since the alternate locking mechanism described above does not exist in that version.

1175.0.1

Enhancements to INFLD Context Menu Handling.

1175.0.2

MX_FILEHOOK operations now work with old ISAM files, at least for the standard file operations (OPEN, READ, WRITE, CLOSE) on the IDA file. (There is currently no point in hooking the IDX file, as the ISAM statements themselves have no hook processing.)

Also, fix a problem with the HFE_PRE_OPEN hook. (If the hook routine opened a file, it probably cleared the hook flags for the file being hooked, causing the hook operations to simply fail.)