1. Implement general purpose functions XFUNC() and XFUNC$ as A-Shell extensions to BASIC (requiring /X:2 to compile.) Usage:
XFUNC(Sbxname,arg1,...,argn)
XFUNC$(Sbxname, arg1,...,argn)
Sbxname is the name of an SBX subroutine which implements the function, and arg1 through argn are the arguments passed to the SBX routine. The only special requirement for the SBX routine is that it return a value (numeric for XFUNC and string for XFUNC$) via a special form of the RETURN statement:
RETURN(<expression)
This RETURN statement specifies an expression that will become the value of the XFUNC() or XFUNC$() function in the calling program. It also ends the subroutine (replacing END in a normal SBX routine). Note, however, that if the SBX was called via an XCALL statement, the RETURN statement will act just like END with the <expression> simply being ignored. Thus a single SBX can act as both a subroutine and a function.
2. MIAMEX function 119 (MX'WINBTN, i.e. Windows button management) has been substantially enhanced:
XCALL MIAMEX, 119, OP, BTNID, BTNTXT, STATE, TYPE, CMD, FUNC, STATUS, SROW, SCOL, EROW, ECOL
It now supports checkboxes and buttons with pictures or icons on them as well as new TYPE codes for text justification. It also allows changing the state of a group of buttons at one time, but setting BTNTXT="*" and the SROW,SCOL,EROW and ECOL to a bounding rectangle. Any buttons which are all or partly within that rectangle will be affected.
Button text no longer needs to be unique.
Popping up a box (via PCKLST, INMEMO, MSBOXX, or any other routine that first saves the screen area, restoring it when the box is removed) will now hide and disable any buttons fully or partially obscured by the box while the box is up.
In the case of checkboxes, the FUNC parameter is replaced by a one byte binary control variable which is automatically updated as the button is checked or unchecked (0=unchecked, 1=checked). Three-state checkboxes have a third value, 2=indeterminate.
For icons and bitmaps, the BTNTXT parameter specifies an ICO or BMP file to load the icon or bitmap from. It is scaled to fill the button.
See the updated A-Shell XCALL Reference documentation for full details on the parameter values, as well as the new sample programs TSTICO and TSTCB (in [7,376] which illustrate their usage). Note that ASHELL.BSI has been updated to Rev 76 to include symbols for the button STATE and TYPE parameters.
The maximum number of buttons has been increased from 64 to 128 (in anticipation of Jorge, who is bound to want to create screens with several columns of checkboxes and buttons on them.)
3. Fix a problem with closing out of Windows by clicking the X with OPTIONS=XABORT.