Please enable JavaScript to view this site.

A-Shell Development History

931.4.1

INMEMO now (properly) supports the EXTOTH flags for defining alternate exit keys when in normal memo mode. Previously, it worked properly in menu mode, but in normal memo mode, the keys would exit but not set the EXTCOD field.

931.3.1

(Windows/ATE) The CMDFLG=4 option (described below as item 4 under 931.1) was not working as described. Now, you can use either CMDFLG=4 or TYPE ||b to get the described effect. Note that neither one has any effect on INFLD controls other than checkboxes, so you could add them indiscriminately, although note that doing so would defeat your ability to display new data in existing checkboxes. (You'd have to first delete the checkboxes and let them be recreated.)

931.3.2

(ATE) The above logic (CMDFLG=4) now works over ATE.

931.1.1

(Windows/ATE) Millirows were not working for controls inside of groupboxes, or in INFLD.

Note, however, that millirows can only be used with GUI mode. (Don't try them with text mode INFLD.)

931.1.2

(Windows/ATE) XTREE opcode 4 (re-select) was not collapsing the multilevel rows when XTR'EXPANDLEVEL=0. Note that this "fix" eliminates the ability to preserve the existing expand/collapse levels when re-selecting from an XTREE (unless you use the new XTF_NOREDRAW flag).

931.1.3

(Windows/ATE) A new INFLD CMDFLG option (4) causes checkboxes to ignore the contents of the ENTRY parameter if the checkbox already exists. This simplifies the application logic needed to deal with clicking on checkboxes that generate exitcodes.

931.0.1

(WINDOW/ATE) Introduce a new GDI printing command:

//SETPENEX,<style>,<thickness>{<r>,<g>,<b>}

//SETPENEX is an EXtended version of the existing //SETPEN, to which it is identical except for the following:

Contrary to the documentation, the <thickness> parameter in //SETPEN was not based on the units established by //SETMAPMODE. Instead, //SETPEN always uses units of pixels. (Although that was really a mistake, changing it now would no doubt have undesirable consequences for existing programs.) //SETPENEX does interpret the <thickness> parameter as being of the units established by the previous //SETMAPMODE statement.
//SETPENEX supports additional <style> arguments to specify the type of endcaps and line joining options. The complete list (now defined in ashell.def) is:

PS_SOLID         = 0        ! (existing) solid pen

PS_DASH          = 1        ! (existing) ------

PS_DOT           = 2        ! (existing) .......

PS_DASHDOT       = 3        ! (existing) _._._.

PS_DASHDOTDASH   = 4        ! (existing) _.._.._

 

PS_ENDCAP_ROUND  = 0        ! (new) round endcaps (default)

PS_ENDCAP_SQUARE = &h0100   ! (new) square endcaps

PS_ENDCAP_FLAT   = &h0200   ! (new) flat endcaps

 

PS_JOIN_ROUND    = 0        ! (new) round joins (default)

PS_JOIN_BEVEL    = &h1000   ! (new) bevel joins

PS_JOIN_MITER    = &h2000   ! (new) miter joins

 

A new sample print file, SETPEN.TXT is now available in the EXLIB to illustrate the new options. Note, however, that the join options do not appear to have any effect (or at least I don't know what they do.) They have been implemented and documented to match the underlying Windows ExtCreatePen() function, but it isn't clear what they are for.

The endcap options are quite useful though. By default, line segments have rounded endcaps consisting of a semicircle with diameter equal to the width of the line, making them more significant as the line thickness increases. The square option makes the endcaps square, which is equivalent to extending the lines by half their thickness, on each end. This may seem illogical at first (i.e. why not just ask for a longer line?) but is actually useful for making complete corners. If you don't want any endcaps, then use the flat option (which is probably what you were expecting in the first place).

931.0.2

Implement an enhanced version of the DIM statement, called DIMX, with the following syntax:

DIMX <id>(<subscripts>){,type{,size}}

e.g.:

DIMX XTDATA(COUNT),S,XTLEN

DIMX is nearly the same as DIM, except:

It accepts optional type and size rather than being limited to F6  and string wth size determined by STRSIZ.

At allocates the memory needed out of the system memory pool, rather then from the user partition.

WARNING: DIMX creates a runtime token that will not be recognized by earlier version of the runtime system, so if you compile a program using DIMX in 4.9.931 or higher, then run it under a previous version of A-Shell, you'll get an "invalid syntax code" (basic error 34) when you hit the DIMX statement.

There is no statement to "UNDIM" an array, although the memory used will be automatically freed when the current RUN program terminates. Also, you cannot redimension an array.

931.0.3

New MIAMEX function MX_FLINES (147):

XCALL MIAMEX,MX_FLINES,CHANNEL,LINES{,WIDTH}

For a file opened for sequential access, this returns the number of lines in the file, and optionally the width of the longest line. LINES will be set to a negative number on error (-1 = file not open, -x = system error # x). The internal file pointer is left at the start of the file. LWIDTH includes line terminator characters (CR,LF) so may be one or two characters larger than the actual number of printable characters on the long line.

This operation could be useful in conjunction with DIMX to first get the dimensions of a file and then DIMX and array to hold it.

The MIAMEX sample program (in [908,31] of the latest EXLIB) illustrates the two operations when you select function 147.

931.0.4

Fix another ancient but minor/obscure bug in FLOCK.SBR. This one occurred if a request to release a record (Action 5) was issued when there were no queue blocks in use at all in QFLOCK.SYS. The operation didn't fail, but it generated a rebuild of the QFLOCK.SYS, which wasn't harmful, but under slow LAN environments, could have caused a noticeable slowdown.

931.0.5

(Windows/ATE) Fast mode (TYPE "F") checkboxes now treat mouseclicks the same as a spacebar (i.e. toggles the checkmark and exits).

931.0.6

(Windows/ATE) New XTREE flag (added to XTREE.DEF):

DEFINE XTF_NOREDRAW = &h08000000   ! disable redraw on opcode 4

When used with opcode 4 to reselect from an existing XTREE, it disables the normal redraw operation, thus preserving the scroll position, column alignment, etc. This makes for a "cleaner" re-entry into the control, but only be used when you haven't changed any of the XTREE parameters which would affect the display.

The sample program XTRA3 (in [908,21] of the EXLIB) has been updated to illustrate this. To test, start by creating a control (opcode 0), load in the full 47 items, and toggle the Modeless option. Once in the control, adjust the column sizes, scroll down and select an item(s) and hit ENTER or doubleclick to exit. Then use opcode 4 (select) and check the box with the option to disable the redraw.

931.0.7

(Windows/ATE) Control coordinates now support "millirows". When the start row or end row coordinate to AUI_CONTROL or TAB(-10,20) commands is greater than 200, it is assumed to be in units of "millirows" (1000 to the row) rather than rows. This allows the vertical position and size of a control to be more finely adjusted than is possible with integer rows or even with the MBF_ALTPOS option.

Notes:

This option applies only to the row coordinates, not the column coordinates (where such fine tuning is generally not necessary).
To avoid confusion, millirows should probably not be used in conjunction with the MBF_ALTPOS on the same control.
In general you will get the same results whether you specify a row value in units of rows or multiply it by 1000. There are some exceptions, though, where the default position of a row is adjusted up or down based on some internal logic, and in such cases, switching to millirows may defeat the internal logic, causing the line position to change more than expected. For example, with single row horizontal line controls, the default position is in the middle of a row. If you switch from, say, row 5 to millirow 5000, the second line will be half a row higher than the first. In general though, if you want to move a control up or down by a slight amount, multiply the srow or erow value by 1000 and then offset it by some fraction of 1000.

The sample program GUILIN has been updated to show some examples of this.

931.0.8

(Windows/ATE) Fix a problem in which controls using the MBF_ALTPOS style were not always being resized properly when the window was resized.

931.0.9

(ATE) Fix a problem with the TAB(-10,45) command not working if the reverse channel was active.