============================================================================ A-Shell Development Notes Version 5.1.1229.2 (23 Aug 2011) ============================================================================ 1. --- INFLD bug fix: |K was treating ^C like Windows copy even when CTRLC was enabled and the V code was not specified. (||K should be used for that behavior - see 1217 below.) The following chart summarizes the behavior of ^C in various situations: CTRLC TYPE TYPE TYPE status V ||K |K Result of ^C ------- ---- ---- ---- ----------------- * V * * exitcode 10 * ||K * copy to clipboard disabled |K copy to clipboard disabled nothing enabled * Basic error 1 * Indicates that the setting doesn't matter, given the other settings on the line. Blank indicates that the TYPE specified TYPE code is NOT set. ============================================================================ A-Shell Development Notes Version 5.1.1229.1 (22 Aug 2011) ============================================================================ 1. --- INFLD refinement: when the strip trailing blanks (]) option is specified, don't count them towards xmin. (Previously it was possible to get around the xmin by adding literal spaces.) ============================================================================ A-Shell Development Notes Version 5.1.1229.0 (20 Aug 2011) ============================================================================ 1. --- XTREE enhancement: new flag XTF2_ENTERNAVDOWN (&h00020000) alters the default cell editing navigation response to the ENTER key (provided there is no EnterGoto option defined for the current column.) When specified, instead of acting like TAB and moving to the next editable cell to the right, ENTER acts like the DOWN ARROW, except that from the last row it wraps back up to the top. 2. --- XTREE / ATE bug fix: The "%p" symbol in the TreeID (advanced coldef option) now works as documented. Previously, it got translated to "ATE" when saving the settings, but the saved settings were never found again. 3. --- XTREE / ATE enhancement: If the server version is 5.1.1217 or higher, the "%p" symbol in the TreeID (see previous item) now gets translated to the actual application program name, rather than "ATE". (This was made possible by an enhancement in 5.1.1217 in which the server sends ATE the name of each new program being executed.) ============================================================================ A-Shell Development Notes Version 5.1.1228.4 (19 Aug 2011) ============================================================================ 1. --- ATE/APEX bug fix: Under certain obscure circumstances, a cryptic A-Shell command window (the normally-hidden parent of APEX) was becoming visible, sometimes even on top of the APEX window. APEX still functioned, but it was visually confusing to the user. ============================================================================ A-Shell Development Notes Version 5.1.1228.2-3 (18 Aug 2011) ============================================================================ ============================================================================ A-Shell Development Notes Version 5.1.1228.1 (15 Aug 2011) ============================================================================ 1. --- (UNIX) Clean up some inconsistencies relating to the maximum path length supported by different functions. (All should now support 256.) This also fixed a case of segmentation fault during scanning of directories with really long filenames. 2. --- (APEX bug fix): When trying to print/preview a file that doesn't exist, the error message was incorrectly saying "cannot create a file when it already exists", instead of "file doesn't exist". ============================================================================ A-Shell Development Notes Version 5.1.1228.0 (15 Aug 2011) ============================================================================ 1. --- ATE AUXLOC (emulated auxiliary port printing) protocol enhancement. The server now informs the client of the size of the file being printed, allowing ATE to display a proper progress bar (if either the bottom status or system status lines are visible). This is mainly a benefit when printing files large enough to take more than a couple of seconds to transfer, so that user doesn't wonder if the connection is dead. Note that to get the benefit, both the server and client sides must be updated to 1228, but there is no harm in updating either without the other. 2. --- SBX refresh refinement (see 1221.0.3 below). Whenever an updated SBX is detected, replacing the version in memory, the event is now logged (in ashlog.log). 3. --- Improved handling of "RUN file format bad or incompatible" error: the first time this error occurs, the module is re-loaded from disk. (If if happens again, then the error is reported.) This helps eliminate rare situations where an updated SBX gets loaded before it is full written to disk, or where some other mishap has caused the copy of a program in memory to become corrupted even though the one on disk is good. (Such events are always logged though.) 4. --- ATE status line size fix: The bottom status line text was in some cases too tall to fully fit in the area of the status line provided (for certain Window sizes, resolutions, etc.) 5. --- Minor cleanup of handling of an ATE network disconnect during aux port printing. ============================================================================ A-Shell Development Notes Version 5.1.1227.1 (08 Aug 2011) ============================================================================ 1. --- MX_SHOWWINDOW bug fix: The cid (control ID) parameter wasn't being reset to zero if not specified on the command line, thus resulting in window operations on the wrong control. ============================================================================ A-Shell Development Notes Version 5.1.1227.0 (01 Aug 2011) ============================================================================ 1. --- MSGBOX refinement: If external window events cause a shift of focus from the message box to the main A-Shell window, A-Shell now puts the focus back on to the message box. Previously, it was sometimes possible to have the message box visible and on top of the main window, but without the keyboard focus. 2. --- HOST.LIT 2.0(104) is now smarter about sorting out possible confusion between switches and UNIX filespecs (both of which can contain slashes). This allows unquoted commands, such as: .HOST /s/abcd to continue to be treated as filespecs, as they were before the switches /S and /O were added in 2.0(103). Note that the preferred way to prevent UNIX filespecs or commands from being confused with switches is to enclose them in quotes. For example: .HOST /s "/s/abcd" In the above command line, the /s following HOST will be treated as a switch, while the "/s/abcd" will be treated as a command to execute. 3. --- HOST.LIT 2.0(105) expands the maximum size of the buffer available to capture the output of the command from 64K to 256K and now appends a truncation warning message to it if the buffer fills up. 4. --- DO.LIT / MDO.LIT 2.1(124) and SUBMIT.LIT 3.1(150) now support a new kind of command line argument, ++fspec, which get replaced by the first line of the corresponding file. For example, if the file MYDATA:C.TXT starts with "THIS DATA", then the DO file command line: DOTEST A B ++MYDATA:C.TXT would expand to: DOTEST A B (The are employed when the line contains embedded spaces so that the entire line is treated as a single DO file or SUBMIT argument.) 5. --- ATE auto-update improvements: When an ATE workstation connects to a server, the server scans the %MIAME%/atesetup directory looking for ATE install packages newer than the ATE version running on the client. Now, in addition to looking for monolithic install packages named: ate-#.#.#.#*.exe it also looks for: ate-#.#.#.#*-web.exe ate-#.#.#.#*-web.txt The -web.exe files are assumed to be small, web-based, granular update packages, which compare your current version to the one associated with the update package, pulling down from the Internet just the modules that need updating. This style of update package is dramatically faster to transfer from the host to the client and start executing (due to a size different of about 200KB vs 18MB), and often faster to complete since often only a few modules require updating. However, they do require that the client have Internet access. The -web.txt files are tiny text files containing just the URL of the the -web.exe module on the Internet. This version eliminates any need for a file transfer from the application server to the client prior to starting the update, as it merely commands the client to download the granular web installation package directly from the web. (This approach is particularly attractive in conjunction with a Windows application server and 5.0 clients, where large file transfers from the Windows server to the client didn't always work very well.) In heterogeneous environments, you may want to use more than one type of update package. The original, monolithic (single-file) update modules are best with UNIX servers and LANs, particularly if the connection from the application server to the workstation has better throughput than the connection from the workstation to the Internet. But in WAN environments, and also with Windows servers (where the server-to-client file transfer may be slow or problematic), the -web.txt or -web.exe version may be best. (An advantage of the -web.exe version is that the update procedure can be launched directly from the server after it transfers the file; with the -web.txt version, the installer gets downloaded from the Internet via the user's browser, which may require that the user click a button to save the file and then manually launch it when the download completes). If there is more than one kind of update available, A-Shell will select the newest -web.exe or -web.txt version, unless it is able to determine that the client does not have internet access. (Prior to ATE 5.1.1139, the server could not tell, so it assumes that the client does have Internet access.) The -web.exe and -web.txt updates are given equal weighting; whichever one has the latest version will be used. ============================================================================ A-Shell Development Notes Version 5.1.1226.2 (30 Jul 2011) ============================================================================ 1. --- XTREE bug fix: Advanced coldef option FastMax=1 was acting like FastMax=2. ============================================================================ A-Shell Development Notes Version 5.1.1226.1 (26 Jul 2011) ============================================================================ 1. --- ATE licensing refinement: Adjust server/client license handshaking to work around a complication that arises in certain non-USA versions of Windows. (The problem wasn't serious but led to an incorrect warning about a problem in the license, and an unnecessary invocation of the LICENS/ATESRV command on startup.) ============================================================================ A-Shell Development Notes Version 5.1.1226.0 (26 Jul 2011) ============================================================================ 1. --- MX_GETSHELLPATH enhancement: add option to operate relative to the server or the client: xcall MIAMEX, MX_GETSHELLPATH, csidl, folder {,clisvr} where clisvr (S,1) [in] may be set to "S" (for server), or "L" (for local, which is the same as server in this context); anything else is treated as meaning "client". The option only has significance in the ATSD environment where the possibility exists of performing the function relative to the ATSD server or the client. In all other cases, the parameter is ignored and the operation is performed relative to the client, or returns an empty string if an applicable client is not present. 2. --- MX_CHKPCNET enhancement: add option to operate relative to the server or the client: xcall MIAMEX, MX_CHKPCNET, status, flags {,clisvr} Where clisvr is exactly as for MX_GETSHELLPATH above. 3. --- MK_SHELLEX enhancement: add option to operate relative to the server or the client: xcall MIAMEX, MX_SHELLEX, status, objectspec, action, parms, dir, & showflags, waitflags, clisvr (all params after objectspec are optional). The clisvr parameter is exactly as for MX_GETSHELLPATH and MX_CHKPCNET above. 4. --- MX_MKDIR refinement: the remoteflag parameter can now also accept "C" (for client) as an alias to "R" (remote) and "S" (server) as an alias to "L" (local). This is intended to reduce the chance of accidentially using the Client/Server notation in place of the Remote/Local notation. (Experience has shown that some people are confused over which is the "Remote" and which is the "Local", which is why we've moved towards the Client/Server notation, which seems less easy to confuse.) 5. --- XTREE checkbox bug fix: T and T+ (editable checkbox) cells stopped working in 5.1.1225.0. ============================================================================ A-Shell Development Notes Version 5.1.1225.0 (25 Jul 2011) ============================================================================ 1. --- Status line display enhancement: accented characters are now supported. Previously, the 8th bit was used for attribute information, which caused accented characters to generate garbage. 2. --- XTREE enhancement: Left arrow from a child row now jumps to the parent (provided XTF_LEFT is not set, or @@ is used to override it). Conversely, right arrow from a parent row whose children are already expanded jumps to the first child (provided XTF_RIGHT not set or @@ is used). (With this, plus the expand/contract on left/right feature added in 1220.0, XTREE now matches the handling of the arrow keys in the Windows registry editor.) 3. --- INFLD enhancement: new TYPE code ||E causes ENTER to return exitcode 23 instead of the normal 0. This can be useful in certain dialog situations (particularly involving AUI_EVENTWAIT) where either the correct response to ENTER, or the meaning of a response of exitcode 0, might otherwise be ambiguous. 4. --- XTREE change/enhancement: New coldef cformat code "tt" acts like "t" (non-editable checkbox), but instead of always displaying in dim intensity, instead uses the same formula based on the value of the cell as with editable checkboxes. In other words, by default, "tt" checkboxes display in normal intensity; to force individual checkboxes to display as dim, add +4 to the cell value. ============================================================================ A-Shell Development Notes Version 5.1.1224.1 (21 Jul 2011) ============================================================================ 1. --- XTREE bug fix: In editable, variable height with a selection style using one of the gradiant options, the height of the rows was being adjusted slightly when switching between edit and selection mode. Besides being slightly annoying, it was confusing the logic that identifies the clicked-on cell, such that in some cases the edit operation would end up being activated for the cell above the one that was actually clicked. 2. --- ATE status line / aux port printing bug fix: The default text mode for the status lines was switching from fixed pitch to proportional pitch after an auxiliary port printing operation, unless an explicit AG_STATUSLINES command had been issued previously, or a GUI control had been created. (This actually followed the rule in which the default mode is changed to proportional if a GUI control is created prior to any explicit AG_STATUSLINES command, but it seemed like a bug because the GUI control in this case was the progress bar created automatically during the aux printing operation.) ============================================================================ A-Shell Development Notes Version 5.1.1224.0 (18 Jul 2011) ============================================================================ 1. --- Combo box enhancement (applies to INFLD and XTREE selection-only combos): Replace the the standard Windows single-character keyboard matching algorithm with a multi-character version, allowing direct keyboard selection of items from within combos which share one or more starting characters. Previously, the matching logic reset for each new character, making it impossible to select by anything other than the first character of the item. Now the matching logic resets after a delay of 1 second, or after a failed match or a special key (such as arrows, etc.) 2. --- Directory processing fix: Clear up some remaining problems with processing filespecs within directories containing periods. (In particular, COMPIL was failing to rename the OBJ file to RUN on completion.) 3. --- UNIX log file fix: Clear up a race condition relating to logging messages to the ashlog file. 4. --- Mouse wheel enhancements: New MIAME.INI command (OPTIONS=NOWHEEL) disables the otherwise automatic conversion of the mousewheel events into up/down arrow keypresses when the focus is not on a control that captures the mousewheel directly (such as XTREE, multi-line INFLD, etc.) The default behavior allows you to use the mouse wheel to scroll within certain environments that are otherwise text-only (like VUE). But in some cases the default behavior is undesirable, for example: a) On laptops with sensitive mousepads, you may get spurious cursor motion just from brushing your palm against it (very annoying in VUE). b) In screen contexts where there may be a mixture of controls that scroll (like XTREE) and those that don't (like a single line INFLD), users may attempt to use the mousewheel with the intent to scroll an object like XTREE, when in fact the focus is on a control like INFLD where the conversion of the mouse wheel to an up/down arrow maj trigger unwanted exitcodes (3 & 5), leading to further confusion. Note that VUE supports its own version of this switch (in the INI.VUE and command mode): MOUSEPOS . Previously it defaulted to ON (mouse wheel enabled), and was always re-enabled on exit. With this update, it defaults to OFF if OPTIONS=NOWHEEL is set in the miame.ini, and in any case, VUE always restores the original global setting on exit. Also, the mousewheel is now disabled in INFLD self-combo fields (which exit on the first down arrow key); otherwise it is too easy to end up with several additional down arrow key events which would then be interpreted according to logic impossible for the user to predict. Self-combos within XTREE continue to operate as before. 5. --- Directory scanning fix: Close a loophole (introduced in 1219) which led to an accumulation of open file handles during directory scanning operations (e.g. DIR []). The effects generally went without notice, although at some point it was possible that directory scanning stopped working, and even that programs and commands would begin to fail with Out-of-memory or too-many-files errors. 6. --- XCALL AMOS bug fix: When the pflag parameter was passed, and the routine launched a new process to execute the command, the child session was executing in silent mode, making it impossible to run an interactive program. ============================================================================ A-Shell Development Notes Version 5.1.1223.0 (14 Jul 2011) ============================================================================ 1. --- Compiler (edit 487)/language semantic change (could be considered an enhancement or a fix, but does change existing behavior): RESUME ENDFUNCTION (and RESUME ENDPROCEDURE) statements now ignore any explicit $EXIT label. Previously, if there was an explicit $EXIT label defined within the procedure, the RESUME would have resumed at the $EXIT label, and executed any code from there to the actual end of the routine. The new behavior is more natural and safer, since it eliminates the possibility of an infinite error trapping loop (if an error occurred in the code after the $EXIT label). Note that this also affects how untrapped errors within functions and procedures are handled. Previously, the code following an $EXIT label would have been executed before the error status and execution was returned to the caller. If you really to want to execute the code after an explicit $EXIT label upon resuming from the error, you can specify it explicitly in the RESUME statement: RESUME $EXIT Note, however, that the WITH_ERROR clause is only allowed in conjunction with RESUME ENDFUNCTION / ENDPROCEDURE. 2. --- INFLD enhancement: new TYPE code ||u may be used with the D, d, t, and YN codes to ignore the current LDF settings and just use the (American) defaults. Without this, the LDF format was used (even in the absence of the "u" code). 3. --- ATE bug fix: In some cases of a dropped connection, ATE was displaying the "connection reset" message box twice. ============================================================================ A-Shell Development Notes Version 5.1.1222.4 (13 Jul 2011) ============================================================================ 1. --- INFLD date format bug: u was setting the U flag, which was causing DD/MM/YY format even for D fields when the LDF specified MM/DD/YY. Note that contrary to the documentation, the u code is effectively implied for the D and d types, and has no effect on the U field (which forces European date format regardless of the LDF). So in other words, u has no effect on date fields. 2. --- Compiler (edit 486) bug fix: use of the $EXIT label (see 5.1.1192, compiler edit 462) was eventually leading to an "Aux. label buffer overflow" error within the compiler (after a certain number of $EXIT labels). ============================================================================ A-Shell Development Notes Version 5.1.1222.3 (12 Jul 2011) ============================================================================ 1. --- INFLD date format bug fix: Contrary to the documentation, the D and d codes were being subjected to the LDF format (u is supposed to be required for that to happen). Also, u was being treated like U (forcing European format). 2. --- INFLD date format refinement: the u code now applies to U as well as D and d (forcing the use of the date format specified in the LDF). Previously, U was immune from the u code. Also, it no longer matters whether the u comes before or after the D or d code. 3. --- MX_GETOFD refinement: the maximum length of the file (file.ext) parameter parameter has been increased from about 80 to 256. Note that in the ATE environment, updating the server side only will only increase the limit to about 90; you'll need to update both sides to go beyond that. Also note that this relates only to the file name and extension, not the path (so it is fairly rare that 80 wouldn't be more than long enough). 4. --- FTPDLX bug fix: ports > 32767 were generating an error 6 (overflow). Fix is in FTPDLXcall2.dll 5.1.206 (which may need to be re-registered using regsvr32, if you have multiple copies installed in different places.) ============================================================================ A-Shell Development Notes Version 5.1.1222.2 (07 Jul 2011) ============================================================================ 1. --- HOSTEX.SBR bug fix (ATE environment): Launching an interactive program, such as a shell, via HOSTEX, was often starting with the keyboard in local mode. 2. --- HOST.LIT 2.0(103) now supports a help display (HOST /?) and two new options: Usage: .HOST {{switches} cmd {modifier}} Switches: /S display exit status of cmd /O captures the stdout of the cmd and displays it from within A-Shell (The optional modifiers are same as can be used with HOSTEX.SBR) Also, in the case of ATE, the keyboard is reset to normal mode (another way of working around the HOSTEX problem described above.) ============================================================================ A-Shell Development Notes Version 5.1.1222.1 (05 Jul 2011) ============================================================================ 1. --- HOSTEX.SBR bug fix (Windows): The returned status now reflects the actual exit status of the launched application under Windows (matching the way it has long worked under UNIX). Previously (for Windows) it only reported -1 for failure-to-launch and 0 otherwise. Note that the exit status is only valid when the parent is forced to wait for the launched command to terminate. 2. --- AUI_CONTROL bug fix: CTLOP_CLR and TCRT 10 were not clearing dim static text controls when protect mode (TCRT 13) was not active. (It was always acting as if protect mode was active.) 3. --- ISAM-A bug fix: Filespecs longer than 15 characters were being truncated in allocate'indexed operation (most typically via ISMUTL). ============================================================================ A-Shell Development Notes Version 5.1.1222.0 (27 Jun 2011) ============================================================================ 1. --- PCKLST enhancement: XTF2_DOWN flag is now supported (triggers exitcode -43 when DOWN or CTRL+DOWN used from bottom row). 2. --- AUI_IMAGE enhancement: Automatic transfer of server-side image files (opcodes IMGOP_LOAD, IMGOP_DISPLAY and IMGOP_LOADDISP) is now supported under ATSD. (Previously it was only supported with UNIX servers.) Note if the filespec has a backslash in it (i.e. appears to be a Windows native filespec), AUI_IMAGE assumes the filespec is relative to the client and doesn't try to transfer it. The IMGF_FORCEXFER flag can be used to force the filespec to be interpreted as belong to the server, and to transfer the file to the client for display. (If the file doesn't exist on the server, AUI_IMAGE will send the display command to the ATE client anyway, in case the client already has a copy of it.) 3. --- AUI_IMAGE enhancement: The automatic file transfer of images from the server to the client is now smart enough to check if an identical copy of the file already exists on the client (either in the specified directory or either of the cache directories or in the %MIAME%\icons directory). If so, the redundant transfer is skipped. 4. --- MX_FILESTATS enhancement: A new loc'rem parameter value ("C", for client/cache) checks for the file on the local client computer, including looking in the cache and other default local directories. In the case of ATE, this is similar to the "R" (remote) option except that if the file is not found in the specified directory, a search will be made of the other directories that ATE normally checks when trying to open files at the behest of the server (%ATECACHE%, %ATEPERMCACHE%, %MIAME%\icon, and possibly others). In the case of local A-Shell/Windows, this is like the "L" (local) option, except that it also checks the above-mentioned directories. (The cache directory environment variables will typically not be defined for A-Shell/Windows, and thus will be ignored, but the %MIAME%\icons subdirectory and perhaps others may still be valid and searched.) See AG_FILESTATS below if you want to retrieve the actual filespec of the found file. 5. --- AG_FILESTATS enhancement: An optional flags parameter is now supported: ? tab(-10,AG_FILESTATS);fspec{,versiz{,hashsiz{,flags}}};chr(127); The flags parameter may contain one or more of the following: &h0001 Check for fspec in ATE cache directories if not found otherwise &h0002 Returned client native spec of located file The syntax of the return string has been expanded to: bytes, mtime, ctime, mode {,ver {,hash {,pcspec}}} The ver and hash strings are limited in length by the versiz and hashsiz parameters. 6. --- AUI_IMAGE status code correction: if the platform does not support image display (e.g. A-Shell/UNIX with an emulator besides ATE), the return status code is now 24. (Previously it was returning 20, which is properly reserved for another error.) ============================================================================ A-Shell Development Notes Version 5.1.1221.0 (23 Jun 2011) ============================================================================ 1. --- File hooks enhancement: new flag HFF_DATA_CHG_ONLY (&h00020000) may be used in conjunction with HFE_POST_WRITE to suppress calling the hook function after the write if the record data hasn't changed. The new flag is defined in the updated ASHINC:HOOK.DEF The SOSLIB hook test program FHOOKTST1.BP[908,50] and sample hook routine FHOOK1.BP[908,50] have been been updated to test/demo new flag. 2. --- File hooks bug fix: The recsiz field in the hook envelope structure was previously 0. It is now set to the record size specified in the open statement. 3. --- SBX calling enhancement: When an SBX is called, A-Shell now checks to see if the version available on disk is newer than the one in memory, and if so, automatically reloads it from disk. To reduce the overhead of this check to a negligible amout, the test is never performed more often than once per 15 seconds for any single SBX. In other words, within 15 seconds of copying a new version of an SBX into the search path, all calls to the SBX will begin using the new version. Previously, any job that had recently called the SBX prior to the update would most likely have continued to use the old version which was cached in user memory. This ranged from a minor inconvenience (perhaps requiring all users to log out of A-Shell in order to ensure that an updated SBX would take effect right away), to frustration, confusion and wasted time (when thinking that an updated SBX was in use when some users were still running an older version from memory). Note that the test is not "directional", i.e. it will reload the version on disk if there is any difference in the time stamp (newer or older), so you can roll back to a prior version the same way you update to a newer version. WARNING: The search path used to compare the disk version to the memory version is identical to that used to actually load the routine from disk, i.e. first [p,pn], then [p,0] (or the RUN file location, if SBR=SBX_RUNDIR), and finally BAS:. If you intend to roll out a new version of the SBX and take advantage of the feature, make sure that your new version appears before any older versions in the search path. (And if, for some hard-to-imagine reason, you don't want users to immediately being using an updated SBX, don't copy it into the search path.) 4. --- PCKLST (text mode) now supports the XTROP_DELETE operation to clear the screen area used by the list. Note, however, that the screen colors will be set according to what is "current", so you may want to use an explicit TAB(-2,x) and TAB(-3,x) prior to deleting the list. (Or just delete it with some form of PRINT statement.) See the next item for the option to save/restore the screen area involved. 5. --- New PCKLST flag XTF2_SAVRES (&h8000) causes PCKLST to save the screen area unless the XTROP_DELETE opcode is used, in which case it causes PCKLST to restore the area previously saved. Note that PCKLST will automatically save and restore the area of a pop-up, without using this flag, provided that the XTF_MODELESS flag is not set. If XTF_MODELESS is set, then you can set the XTF2_SAVRES flag (in 2nd 4-byte flag word, i.e. flag2) in the first call to create the list display, and again in the final XTROP_DELETE call to remove it. The flag currently does not affect XTREE (GUI mode), which does something like this automatically already. 6. --- XTREE refinement: SHIFT+RIGHT within an editable text cell now marks text rather than advancing to the next cell. (CTRL+RIGHT advances.) 7. --- PCKLST enhancement: XTREE-style title justification ("| ","< ","> ") codes are now supported for the top title. 8. --- New language feature: INPUTONLY and OUTPUTONLY qualifiers may now be appended to function and procedure parameter definitions to clarify their intended usage. The qualifier must immediately follow the parameter size or structure type, with a colon in between, e.g.: FUNCTION FN'TEST(P1 AS S20:INPUTONLY, P2 AS ST_PHONE:OUTPUTONLY) The INPUTONLY clause serves primarily as an aid to self-documenting code, but will also cause the compiler to generate an error if you explicitly reference the parameter in an XPUTARG statement (using a literal param #). (There is no run-time aspect of this feature, so you won't be stopped from outputting to the parameter using a variable to specify the parameter number in the XPUTARG statement.) The OUTPUTONLY clause also aids in self-documenting your code, but in addition it skips the input parameter binding operation (which, for very large parameters could save a lot of CPU cycles). 9. --- MSGBOX fix: The enhanced detection of CTRL+C (see 5.1.1211.0.7 below) was interfering with the normal use of MSGBOX immediately after processing a CTRLC+C keyboard sequence (whether as an abort command, copy to clipboard, or some other operation). If the time lapsed between the original CTRLC+C and the XCALL MSGBOX was too short, MSGBOX was still detecting the CTRLC+C and treating it as a request to abort. 10. --- ATE refinement: The "Kbd Lock" menu item on the Settings menu has now been split into two items: "Kbd Lock" and "Kbd Local". The former now relates only to the traditional keyboard lock (set with TAB(-1,7), cleared with TAB(-1,8)), while the "Kbd Local" checked menu indicates if ATE will transmit keyboard characters directly to the host, or queue them up locally (to be consumed by local processes, such as GUI controls operating on the client). Previously, the single "Kbd Lock" menu item applied to both, which was sometimes confusing. 11. --- MX_OSVER enhancement: The osname parameter will now be returned with "/64" appended to the end when running a 64 bit Windows OS. 12. --- XTREE/PCKLST enhancement: new flag XTF2_POPUP causes the tree control to be created as a popup rather than as a child control. This is mainly useful when creating an XTREE in the main window (rather than in a dialog) that may overlap other controls, and where you want those other controls to remain visible. Normally, XTREE will save and then remove any overlapping controls when it is displayed in a main window, because otherwise those controls may "bleed" through (interfering with the visual and operation aspects of the XTREE control). The feature was added primarily to improve compatibility with the text mode of PCKLST when it is used to create multiple overlapping "pick lists". That always worked fine in text mode; now it works fine in GUI mode as well. The flag is defined in XTREE.DEF as: define XTF2_POPUP = &h00010000 ! implement as popup rather than child Note that the new mode constrains some of the more advanced behaviors of XTREE, so it should probably only be used in simple "pick lists" (as you have when XTREE is called by PCKLST). In particular, popup mode is incompatible with editable tree mode. 13. --- New ATE command AG_IATIMEOUT (79) to retrieve or set the inactivity timeout period. Same idea as MX_IATIMEOUT but for the Windows or ATE client. tab(-10,AG_IATIMEOUT);opcode;",";timesecs;chr(127); opcode should be "1" to set the timeout, and "0" to retrieve it (in seconds). (Since the default opcode is "0" and the timesecs argument is ignored in the case of the retrieve operation, both arguments can be eliminated when retrieving the timeout.) timesecs is the new timeout value in seconds. (Note that this differs IATIMEOUT parameter in the system INI file, which uses units of minutes.) Retrieve: ? tab(-10,AG_IATIMEOUT);chr(127); input "",timeout'seconds Set: ? tab(-10,AG_TIMEOUT);"1,";timeout'seconds;chr(127); Comments: Also see IATIMEOUT in the system INI file and MX_TIMEOUT. Note that in the case of ATE, if the server-side timeout expires, the job will receive error 254, whereas if the client-side timeout expires, the job will experience this as a hangup (error 250). See the section on Job Terminations in the Development Guide for more details on how hangups are handled. 14. --- (Windows/ATE) Inactivity detection improvement: mouse activity is now treated as activity (i.e. clears the inactivity timer). Previously only keystrokes and Basic program instruction execution counted. 15. --- New AUI_CONTROL ctype2 flag MBF2_NOMOVE (&h00040000) prevents a dialog from being moved. This does not interfere with the ability to minimize, maximize or resize the dialog, which are controlled by other options (MBF_MODELESS, MBF_MAXBUTTON, and MBF2_RESIZE, respectively). 16. --- LIT command enhancement: remove the limit on the number of PPNs allowed per device, affecting the following commands: COPY.LIT 3.3(134) DIR.LIT 3.3(149) ERASE.LIT 3.3(120) PPN.LIT 3.3(112) RENAME.LIT 3.3(112) SYSACT.LIT 3.3(106) (The major.minor versions of all of the above were updated to 3.3 to make it easy to recognize these versions.) ============================================================================ A-Shell Development Notes Version 5.1.1220.2 (08 Jun 2011) ============================================================================ 1. --- Compiler fix: DIMX arrays defined within functions and procedures with the AUTO'EXTERN option enabled were mistaking the arrays' local scope for global, causing the compiler to complain, for example, about a duplicate variable if a local DIMX array had the same name as a global one. Note that the fix just affects the spurious compilation error; the hash code of the RUN file (of programs which previously compiled without error) will not change after recompilation. ============================================================================ A-Shell Development Notes Version 5.1.1220.1 (07 Jun 2011) ============================================================================ 1. --- New pseudo RGB symbol RGB_TRANSPARENT (&h02020202) may be specified with static and checkbox/radiobutton controls to create a transparent background, providing an alternate method for making those controls blend into non-standard window background colors. 2. --- INFLD refinement: checkboxes and radiobuttons now automatically use the transparent background feature (described above), UNLESS the OBCLR field of the INFCLR parameter is >= 0. ============================================================================ A-Shell Development Notes Version 5.1.1220.0 (06 Jun 2011) ============================================================================ 1. --- MX_SHOWWINDOW / AG_SHOWWINDOW enhancement: new opcode -3 (SW_QRYPIX) is like -1 (SW_QUERY) but returns the coordinates of the target window or control in pixel units, rather than "universal units". New symbols have been defined (in ASHELL.DEF) for the 3 query opcodes to make them more self-explanatory: SW_QRYCTLUNV -1 (Query control in Universal Units; same as SW_QUERY) SW_QRYMONPIX -2 (Query monitors in Univ. Units; same as SW_QRYMON) SW_QRYCTLPIX -3 (Same as SW_QRYCTLUNV but returns coords in pixels) 2. --- XTREE enhancement: In multi-level trees, the left and right arrow keys now act like the +/- keys (to expand/contract levels), provided there is no conflict with those keys, i.e. provided none of the XTF_EDITABLE, XTF_LEFT or XTF_RIGHT flags is set. You can also force the new left/right behavior even when such conflicts exist by using the new compound cformat code "@@" (instead of "@"). Although this may be an "enhancement" of only microscopic proportion, it does permit rapid navigation in multi-level trees without have to lift one's figures from the cursor control keys. 3. --- PCKLST enhancement: The text-mode implementation is now "tolerant" of the XTREE format of the COLDEF (aka PROMPT) parameter, provided that the XTF_COLDFX (&h040000) bit is set in the flags parameter. It doesn't actually respond to any of the XTREE-only options (cformat codes, etc.), but it now does support the cwidth and ctitle values for the first column and interprets the contents of the array parameter accordingly. Previously, PCKLST (text mode) required that the actual array width matched the window width and treated the PROMPT parameter as a title string. This is another case of a minor enhancement, but it allows programs using XTREE/PCKLST for basic single-column lists to take advantage of some advanced XTREE features when in GUI mode, without completely breaking the the text mode operation. It also opens the door for the possibility of supporting some of the simpler Advanced Coldef options (such as SelChgExit) in PCKLST/text mode. 4. --- PCKLST enhancement: The XTF_NOSEL flag bit is now supported (to display a list without waiting for a selection to be made). 5. --- PCKLST enhancement: The SelChgExit=### advanced coldef option is now supported. 6. --- PCKLST enhancement: The RFCLR and RBCLR fields in the MMOCLR structure (previously reserved for a ruler but never implemented) will now be used (if either is not -1) to redisplay the selection bar on exit from menu mode. This is intended to allow a way to simulate the way XTREE typically displays the selection bar in light gray when the tree is not active. 7. --- INFLD multi-line bug fix: Unless one of the fixed-pitch font options was specified (||F or ||f), the font height was being expanded to fit the height of the control. (Made sense for single-line inputs, but not for multi-line.) Problem was introduced in 5.1.1200. 8. --- ATE / OpenSSH bug: The TERM environment variable on the server was being set in all upper case (e.g. AM75G instead of am75g). This was only an issue if you were working outside the A-Shell environment. ============================================================================= A-Shell Development Notes Version 5.1.1219.3 (06 Jun 2011) ============================================================================ 1. --- Calendar bug fix: if the container dialog was smaller than the calendar, it was displaying just a sliver of it, rather than just clipping it to the size of the container. Bug was introduced in edit 1212. 2. --- Control centering bug fix: MBST_HCENTER and MBST_VCENTER options were centering (and clipping) based on the coordinates requested rather than the actual control size. (This mainly only affected controls with immutable sizes, such as the calendar control.) 3. --- Directory scanning bug fix/enhancement: MX_FINDFIRST/MX_FINDNEXT/MX_FINDEND sequences can now be nested. Previously, MX_FINDFIRST effectively executed an implicit MX_FINDEND to terminate the previous sequence, which could have led to a crash or other error if the interrupted sequence was then continued. Although the documentation has always clearly stated that only one directory scan sequence can be in progress at the same time, the situation can arise in event-driven contexts, or within nested routines, where it is not possible for the local context to be aware of a scan in progress by the calling context, or vice versa. Nesting thus eliminates a cause of hard-to-debug application or system errors. 4. --- Dialog sizing bug fix: Creating a dialog of a specified client size in pixels using MBF_DIALOG+MBF_ALTPOS and MBF2_PIXSIZE (see 1176.0) wasn't working in a variety of situations. 5. --- XTEXT bug fix: correct a problem introduced in 1218 in which it reported to the user that 0 lines would be saved when not applicable (i.e. when in display mode, etc.) ============================================================================ A-Shell Development Notes Version 5.1.1219.2 (27 May 2011) ============================================================================ 1. --- Further refinements to the "ink saver" algorithm: - Fix a problem with white text on a dark background disappearing - Fix problems with large white areas on a dark background turning dark - Apply a gamma lightening adjustment to the final result ============================================================================ A-Shell Development Notes Version 5.1.1219.1 (27 May 2011) ============================================================================ 1. --- AUI_IMAGE improvement: The "Ink Saver" (IMGCF_INKSAVER) algorithm (see 1215.0.7 below) has been improved to optimize the single color responsible for the most ink, rather than simply the single color occupying the most screen area. This results in better overall optimization in screens where the most common color is already very light, but there is still a substantial area of a much darker color. ============================================================================ A-Shell Development Notes Version 5.1.1219.0 (26 May 2011) ============================================================================ 1. --- ATE/ATSD licensing counting adjustment: ATSD now identifies instances with the machine ID reported by the ATE client during the initial handshake, rather than with the ID generated by the server. This makes the names listed in the SYSTAT/C display more meaningful, and should mostly eliminate the discrepancy between the way sessions were counted against the license between P2P and ATE connections to the same server. 2. --- ERRMSG.xxx message file fix: a few of the standard messages (particularly warning messages relating to the license count) were displaying some garbage in the ashlog.log due to spurious "%" characters in the message files (which have now been updated). 3. --- LOG file improvement: certain fatal error messages (like "you've been zapped!") were only appearing on the screen; these are now being logged (mainly of interest for follow-up support/review.) 4. --- XCALL/Function parameter improvement: the maximum number of parameters which can be passed to an XCALL (SBR/SBX) or Function/Procedure has been increased from 100 to 128. If you need more than that, perhaps a redesign of the routine's interface may be in order. (Although we've said that before, and here we are, increasing it again!) ============================================================================ A-Shell Development Notes Version 5.1.1218.0 (24 May 2011) ============================================================================ 1. --- XTEXT enhancement: a new field, TXC'MAXROWS, has been added to the TXTCTL structure (see XTEXT.MAP and XTEXT.SDF) to support an optional row count limit. If specified, a warning dialog will display when the limit is exceeded (as soon as it happens, periodically, and on exit). Text of dialog can be customized via SBRMSG.xxx 023,002 and 023,003. 2. --- XTEXT enhancement: new txc'docfmt'xxx flags relating to ATE: TXFF_RAWBUF (&h0400) TXFF_XFER (&h0800) TXFF_RAWBUF may be set in the txc'docfmt'src field to cause the source file to be transferred to the ATE client via the ATE auxport transfer protocol, rather than via FTP. (This is the default mode for ATSD, where FTP is typically not available but it may be set explicitly for UNIX applications. When txc'docfmt'dst is a buffer (i.e. TXFF_FILE flag is not specified), then TXFF_RAWBUF may be set in the txc'docfmt'dst field to cause the return buffer to be sent directly (via the stdin channel) rather than via FTP. In both cases, the TXFF_RAWBUF method is faster, provided the amount of text is less than about 4K. (FTP starts out slower due to the need to establish a new connection, but eventually catches up due to windowing and other flow maximization techniques.) Note that the TXFF_RAWBUF bit should only be used in the txc'docfmt'dst field for files that cannot contain binary data (such as embedded objects). TXFF_XFER may be specified in the source format field (txc'docfmt'src) to force XTEXT to interpret the source file as being local to the server and requiring transfer to the client. Without this flag, the PC filespecs (containing backslashes) will be assumed to be visible directly to the client and thus not requiring file transfer. (This mainly a concern with ATSD where both the server and client environments are Windows.) ============================================================================ A-Shell Development Notes Version 5.1.1217.4 (23 May 2011) ============================================================================ 1. --- INPUT CSV refinement: the auto-detection of the delimiter character (see 1215.0.13 below) now chooses the most common delimiter character (outside of quotes) on the entire first line, rather than settling for the first delimiter it finds. 2. --- XTEXT refinement: The context menu Paste option now recognizes the existence of a bitmap on the clipboard (if the destination format supports it). Previously it only recognized the availability of text to paste. ============================================================================ A-Shell Development Notes Version 5.1.1217.2 (19 May 2011) ============================================================================ 1. --- Bug fix: MX_MAPI was not handling multiple attachments very well, and was sometimes generating a spurious error -7 even with one attachment. 2. --- Bug fix: MX_ABOUT called within a locally-licensed ATE instance was generating a spurious file open error dialog. (Mainly noticed in the print screen routine.) 3. --- Bug fix: When an INFLD call was interrupted by another SBX (launched from the menu, such as the print screen utility), certain attributes of the current field (type, tooltip) were getting corrupted on return. 4. --- ATE refinement: When connecting to an ATSD server, the login name and password fields may now be used, either together or individually, along with the additional login text. Previously, it was mainly only reliable to enter all of the login information in the additional text box (which defeating the password masking feature, at least in the config dialog). ============================================================================ A-Shell Development Notes Version 5.1.1217.0 (18 May 2011) ============================================================================ 1. --- Server now notifies ATE of current program and version (used by the print screen utility.) 2. --- The print screen interface has been re-engineered to eliminate the need to launch it in a separate instance (making it leaner and cleaner). 3. --- IMPORTANT BUG FIX: 5.1.1209.6 broke the automatic cleanup of local DIMX variables, causing another memory handle to be used up on execution of a DIMX within a function or procedure. (This easily led to an out-of-memory handles or out-of-memory error.) 4. --- INFLD bug fix: pasting from clipboard into a combo box was causing flaky results, including locking up the field. 5. --- INFLD new type code: ||K acts just like |K (Windows keyboard conventions) but also disables the CTRLC abort while the field is active. This allows you to use ^C for copy-to-clipboard without first having to disable the CTRLC abort in the application. 6. --- INFLD improvement: The standard keyboard commands for selecting characters (^A, shift+arrows, shift+home/end) now work in combo boxes. 7. --- License display bug fix: In some cases the display of license options (mainly under UNIX) was containing garbage characters in place of an unset option. 8. --- MX_MAPI bug fix: The routine was aborting with a spurious error -7 (file not found) in cases where only one attached file was specified. ============================================================================ A-Shell Development Notes Version 5.1.1216.1 (15 May 2011) ============================================================================ 1. --- XTREE bug fix: Tooltips we're becoming corrupted if the memory space allocated for the had to be moved as it was expanded. 2. --- Print screen bug fix: The print screen dialog was corrupting the current INFLD context. To eliminate interactions between the print screen dialog and the current program, the calling mechanism has been changed to launch a separate instance. (Requires APRNTSCRN.SBX 1.0(105) update to support new calling arguments.) ============================================================================ A-Shell Development Notes Version 5.1.1216.0 (14 May 2011) ============================================================================ 1. --- AUI_IMAGE new opcode: IMGOP_SAVEAS (11) may be used to convert one image type to another: XCALL AUI, AUI_IMAGE,IMGOP_SAVEAS, handle, status, fspec, comp The arguments and operation are nearly identical to IMGOP_CAPTURE, except that the source of the operation is a previously loaded image specified by the handle parameter. The image is saved to the specified fspec, converting it (according to the extension of fspec) and the compression and other options in the comp parameter. For example, you could use this opcode to load a 24 bit color BMP and save it as an 8 bit grayscale PNG with the "Ink Saver" transformation. In fact, the print screen utility (APRNTSCRN.SBX) now uses this technique to process changes in the image attributes (which is faster than taking a new screen picture). 2. --- AUI_IMAGE bug fix: IMGOP_CAPTURE now works when the window being captured is on a secondary monitor. Previously it only worked on the primary monitor (and was otherwise returning a spurious error code). Note however, that for WINID=-1 (screen), it still only returns the primary monitor screen. 3. --- AUI_IMAGE bug fix: Opcodes 1 and 5 were failing to recognize the filespec. 4. --- New MIAMEX function MX_CSVDELIM (181) allows the CSV delimiter to be set or retrieved: XCALL MIAMEX, MX_CSVDELIM, op, delim$ where: op (num) [in] is the opcode (0=get, 1=set) delim$ (s,1) [in/out] is the delimiter retrieved (opcode 0) or to be set (opcode 1) When set, the specified delimiter overrides delimiter normally used by the WRITECD, WRITETD, and INPUT CSV statements. 5. --- WRITECD/WRITETD refinement: In addition to supporting the new custom CSV delimiter (see above), it now quotes any field that contains any of the the "likely" delimiter characters (comma, tab, semicolon, colon), the custom delimiter character (if applicable), or any of the "problem" characters (quote and apostrophe). 6. --- Print screen bug fixes and enhancements (APRNTSCRN.SBX 1.0(103)): - The header and footer in landscape mode were intersecting - Changes to the image attributes are now shown immediately - The refresh button was moved to the Image Source groupbox to make it more obvious that it needs to be clicked to re-take the image after change the source options. - If the SaveDir directory is in \Program Files\, it is moved to the user's My Directory folder (to eliminate privilege violations and directory virtualization confusion.) - The dialog is now slightly smaller and appears centered on the current monitor (eliminating a problem with the buttons being off the screen). It also displays on top of everything else, making it much harder to cover up and forget about (which effectively locks up the session). - An email button has been added. Thanks to Steve Evans for pointing out several of these issues during testing! 7. --- SBXINP.SBX 2.3(3) update refines ^C handling, eliminating a situation where ^C was causing "an explosion". ============================================================================ A-Shell Development Notes Version 5.1.1215.0 (12 May 2011) ============================================================================ 1. --- (ATE) New version of ASHNET2.DLL (2.0.202) replaces the previous implementation of the OpenSSH protocol, adding support for client-initiated keepalive (more about that below), as well as fixing a number of internal issues, including the fact that the previous version crashed when executing the UNIX "su" command. The new version also supports an abort option dialog while waiting for the connection. (This allows you to cancel the operation instead of having to wait for it to time out.) This variation of SSH is now the preferred one in all cases. To activate it, check the "OpenSSH" box in the ATE configuration dialog Transport panel. To confirm that you are using it, the About box now indicates whether you are using ASHNET or ASHNET2 and the version. Compatibility note: The new ASHNET2.DLL requires ASHW32.EXE edit 1215 or higher. (It will complain otherwise.) The old ASHNET2.DLL will work with newer or older copies of ASHW32.EXE, but is no longer recommended. Background Note: Originally, the only SSH option supported by ATE was the "TUNNEL", based on a proprietary COM implementation of SSH in wodTunnel.dll. That option continues to work well, but suffers from the complexities and other disadvantages of a tunnel vs. a direct SSH transport. In 5.1.1148, we added a direct SSH option, based on another proprietary SSH library which was packaged into ASHNET.DLL. That option also works fairly well, but is known to drop the connection in response to certain communication errors, for which we've been unable to find any solution. This led to the introduction of another direct SSH option, this one based on the open source OpenSSH project, and packaged in ASHNET2.DLL. It seemed to solve the problem of the spurious dropped connections, but was missing a KeepAlive option and crashed when executing the UNIX "su" command. Since this new implementation solves both those problems, unless we discover something unexpected in the course of field testing, we'll probably drop the previous direct SSH option entirely. 2. --- (ATE) - Add a keepalive option to the configuration dialog (ATECFX 4.0.145). 3. --- (Windows) New MX_SCRNPIC option, SPICF_GUICSV (&h0100), dumps the current GUI control table to .CSV. The intent is to make it possible for developers who are using GUI-enhanced text (e.g. TPRINT, DPRINT, INFLD) to extract the information about the resulting text and edit controls and combine it with the text-based screen dump information to create an "enhanced text" screen picture. The details of how to do that have been left to the individual developer. The layout of the CSV data is similar to that of the "Dump Control Info to Spreadsheet" function, but simplified and improved somewhat by adding the explit font information. The columns headers should help identify the data. 4. --- XSTRIP.SBR added to the standard release (after fixing some bugs introduced in 5.1 during translation of the original proprietary version written by John Pruitt.) The subroutine performs various string editing operations: Syntax: xcall XSTRIP, strarg or: xcall XSTRIP, strng, filter, opcode strarg (string, 2+ bytes) [in/out] is the string to be operated on. filter (string, 1+ bytes) [in] contains filter info, depending on opcode. opcode (num) [in] defines the operation. In the first syntax, the routine is equivalent to XCALL STRIP (removes trailing blanks). opcode 1: All occurrences of any of the individual characters in the filter are removed from strarg. opcode 2: All occurrences of characters NOT in filter are removed from strarg. opcode 3: Remove words. filter contains a comma-separated list of words to be removed from strarg. Double spaces resulting from the removal of a word are shortened to a single space. Example: strarg = "THIS IS A TEST OF THIS XCALL ROUTINE" filter = "THIS,TEST,ROUTINE" XCALL XSTRIP,strarg,filter,3 Result: strarg = " IS A OF XCALL " opcode 4: Remove matching characters from start of string. Example: strarg = "THIS IS A TEST TO SEE WHAT IS HAPPENING." filter = "SIHT " XCALL XSTRIP,strarg,filter,4 Result: strarg = "A TEST TO SEE WHAT IS HAPPENING." Note: The removal process was terminated at the first character of strarg for which there was no match in filter ("A"). opcode 5: Remove matching characters from the end of the string. Same concept as opcode 4 but starts at the end of strarg and works backwards. opcode 6: Pair-wise character substitution. filter must contain an even number of characters, interpreted as pairs. Each occurrence in strarg of the first character in each pair (of filter) is replaced with the second character of the pair. Example: XCALL XSTRIP,strarg,"A1B2",6 ! replace all "A" with "1"; "B" with "2" opcode 7: Reduce multiple spaces to single spaces. filter not used. E.g: XCALL XSTRIP,strarg,"",7 5. --- New command AGCMD.LIT may be used to send a TAB(-10,AG_xxx) command from the dot prompt or within a command file (without having to write code and compile it). Useful for experimentation and for inserting simple ATE or other GUI configuration commands in startup command files. Usage: .AGCMD{/switches} is the symbolic AG_xxx name (case insensitive, with or without the AG_ prefix), or numeric value of the AG command to execute. is the remainder of the parameter list as it would be passed in the TAB(-10,AG_xxx) statement, except without the trailing chr(127). Switches: /K# Assign result to CMD/DO variable $KBD# /S Silent (don't display the command response) /N No wait (don't wait for any response) /W:# Wait # seconds for response (overriding default) Examples: AGCMD WINEXEC,$DEL %ATE%\dsk0\001004\ftpdlx.log AGCMD WINTITLE,This is the new and improved title AGCMD SHOWWINDOW 3 AGCMD STATUSLINES,1,0 AGCMD/S 24,cmd.exe,option,"/c ipconfig > ipcfg.lst",,0,1 AGCMD/N PALETTE,3,0,123,207,242 AGCMD/S/K1 BROWSEFOLDER Note: If neither of the /N or /W:# switches are specified, AGCMD will use the "normal" wait value based on the command itself, ranging from no wait (for commands with no response, e.g. AG_STATUSLINES), to a few seconds (for commands with an immediate response, e.g. AG_GETENV), to unlimited (for commands which require a user response, e.g. AG_WINPTR). Some commands, however, have a variable response (or lack of), depending on the command parameters. For example, AG_PALETTE has no response when used to set a color, but has a "standard wait time" response when used to retrieve palette info. For these commands, AGCMD defaults to the "standard wait time" (a few seconds). To avoid waiting for a response that won't be coming, use the /N switch (as in the example above). 6. --- New command ECHO.LIT functions similarly to the UNIX and Windows echo command. It offers similar functionality to the CMD/DO file ":< ... >" mechanism, but is more flexible and powerful, supporting the full range of special special $ variables (which otherwise only work within DO files) and environment variables (e.g. %MIAME%) .ECHO Your job name is $NJ .ECHO The MIAME directory is %MIAME% .AGCMD/K0/S BROWSEFOLDER .ECHO You selected folder $KBD0 7. --- (Windows, ATE) AUI_IMAGE new opcode IMGOP_CAPTURE (10) captures the screen or a window to a file: Syntax: XCALL AUI, AUI_IMAGE,IMGOP_CAPTURE, handle, status, fspec, comp, winid The concept is similar to that for IMGOP_ACQUIRE, except that the source of the image is the screen/monitor rather than a scanner. The parameter sequence and interpretation is also nearly identical to IMGOP_CAPTURE. The main exception is the last parameter (which in IMGOP_CAPTURE specifies the title to put on the scan dialog). Here it identifies the screen option to capture: winid (string) [in] - Indicates the image source: -2 = current A-Shell window or modal dialog (if applicable) -1 = entire screen (primary monitor only) 0 = main A-Shell window 0### = arbitrary window or control handle ### ### = id of the AUI control to capture name = name of the AUI control to capture Note that the -2 and 0 options capture the target window/dlg and anything above it. The comp parameter supports some additional flags (which are not applicable to IMGOP_CAPTURE): IMGCF_CLIENT (&h00080000) Capture just the client area of the target window. (Else incl. window border, titlebar, menu, etc.) IMGCF_GRAY (&h00100000) Convert captured image to grayscale (All of the following imply grayscale...) IMGCF_BI_SCATTER (&h00200000) Convert to bi-level using scatter method IMGCF_BI_DITHER (&h00400000) Convert to bi-level using dither method IMGCF_BI_THRESH (&h00800000) Convert to bi-level using threshold method IMGCF_NEGATE (&h01000000) Negative image (useful with black window bg) IMGCF_INKSAVER (&h02000000) Save ink by converting most common color to white* *The "inksaver" option attempts to address the common complaint about graphic screen images using up too much printer ink or toner. It analyzes the image to identify the most common pixel value, which is most likely the window or dialog background color. It then converts that color to white (requiring no ink). Any pixels that were originally white are changed to a light-gray so as to not completely disappear into the background. 8. --- (Windows, ATE) AUI_IMAGE now supports saving to PNG format (in the acquire and capture operations). The comp parameter indicates one of the following compression filtering options: PNGF_ALL 0 Use best filter for each row (best compression) PNGF_NONE 2 No filter (fastest) PNGF_SUB 4 Difference filter with adjacent pixel PNGF_UP 6 Difference filter with previous row PNGF_AVG 8 Average filter PNGF_PAETH 10 Paeth filter You can add the following to any of the above PNGF_INTERLACE +1 Save as interlaced file 9. --- (Windows, ATE) Add a configurable "Print Screen" option to the File menu. Although the option is customizable (and easily removed), we decided to define a default behavior and place on the menu to reduce the confusion that has historically surrounded the print screen function. The behavior of the option is determined by a configuration file, BAS:APRNTSCRN.CFG, which should be formatted as follows: ; [MENU] Command=SBX:APRNTSCRN A default APRNTSCRN.CFG configuration file (formatted as above) is included in the installation/update packages, but will not overwrite an existing copy. (So once you modify your configuration, it will stay put.) The APRNTSCRN.SBX file (and its source, APRNTSCRN.BP) will be supplied (and overwritten) during installation/update. So if you want to modify the default print screen behavior, you should supply your own SBX and plug its name into the Command= line of the APRNTSCRN.CFG file. To remove the item from menu, just comment out (or remove) the Command= line from the APRNTSCRN.CFG file. To accomplish this for many ATE clients in one step, you can use ATSYNC.LIT in a startup command file to update the individual copies of APRNTSCRN.CFG from the server. Or, even simpler, just send a command to delete the APRNTSCRN.CFG file, e.g. ? TAB(-10,AG_WINEXEC);"$DEL %MIAME%\DSK0\007006\APRTNSCRN.CFG";chr(127); or, using the AGCMD.EXE: .AGCMD WINEXEC $DEL %MIAME%\DSK0\007006\APRNTSCRN.CFG As an alternative to calling an SBX to perform the print screen function, you can specify an arbitrary Windows command line (removing the "SBX:"), e.g.: [MENU] Command=super-print-screen.exe -arg1 -arg2 -arg3 Note that the APRNTSCRN.CFG file is only processed by the menu subsystem the first time you click on the menu bar. So removing it or changing the Command= line after the menu has already been accessed will have no further effect until you close and relaunch the session. 10. --- AUI_MENU bug fix: When specifying the parent menu by name (rather than position) in the menuid parameter, it was failing to match equivalent names that differed only by the presence or position of "&". For example, "File" was not matching "&File". Also, a menuid of "" was matching the first submenu (typically "File"), instead of the overall top menu. In some cases these anomalies didn't affect the overall result, but in some cases they caused it to fail. 11. --- AUI_MENU refinements: When deleting a built-in menu, you can now set the menuid parameter to "" and put either the string representation of the internal menu id # in the mnutxt parameter, or the numeric value in the itemid parameter (in which case set mnutxt=""). (The latter method apparently seems more natural to some users, whose efforts were previously failing.) TAB(-10,AG_MENU) supports simplified deletion of menu items using either of the following formats: TAB(-10,AG_MENU);"3,,";str(IDM_PRINTS);chr(127); TAB(-10,AG_MENU);"3,";MENUID$;",";MNUTXT$;chr(127); The first example works for internal (built-in) menu items, where you must specify the str() of the IDM_xxx value for the menu (from ashell.def). The second example works for custom menu items, where you specify the text of the parent menu and the text of the item to delete. These formats are mainly useful with AGCMD.LIT, since they don't apply to AUI_MENU. They are faster than any other method for deleting individual items one at a time, since there is no return status. 12. --- DEL.LIT 2.2(108) bug fix: Memory modules longer than 8.3 were not being deleted due to truncation of an internal variable. 13. --- INPUT CSV enhancement: It now detects colon and semicolon delimiters in addition to the comma and tab delimiters previously detected. Also, the detection logic is activated only on the first line of the file; after that, it will remember and re-use the delimiter for the remainder of that file. (This eliminates the possibility that the detected delimiter might change at some point in the file due to an ambiguously formatted line.) ============================================================================ A-Shell Development Notes Version 5.1.1214.0 (28 Apr 2011) ============================================================================ 1. --- The A-Shell/Windows status line configuration is now saved and restored with the .ash file. 2. --- Status line bug fix: When the top status line was disabled, the proportional font used on the bottom status line became almost microscopic (1 pixel high). 3. --- AG_STATUSLINES enhancement: two new stslin options allow save and restore of the status line configuration: ? tab(-10,AG_STATUSLINES);"stslin,visible,textmode";chr(127); When stslin=4, the visibility/configuration of all status lines is saved. When stslin=5, the previously saved configuration is restored. 4. --- VUE 3.0(307) uses the new AG_STATUSLINES feature (above) to save the present status line configuration and then enable the bottom status line (which is used by VUE to display important information during editing). On exit, the previous status configuration is restored. 5. --- New SBR=AUTO_DLG_MAX option (in the MIAME.INI) causes AUI_CONTROL to automatically maximize any newly created dialog which is larger than the screen size (for single monitor systems). The intent is to help existing dialogs conform better to netbook and tablet environments whose screens are smaller than the dialogs were originally designed for. (Maximizing in this case actually reduces the size of the dialog, and scales all the controls within it accordingly.) If the dialog is small enough to fit, but is partially off the screen, it is shifted so as to be entirely visible. ============================================================================ A-Shell Development Notes Version 5.1.1213.1 (27 Apr 2011) ============================================================================ 1. --- About dialog refinements: For ATE, it now clarifies that the version it is displaying at the top of the About box applies to ATE (A-Shell on the client) not to A-Shell on the server (although the latter version continues to also show in the lower part of the box). It also indicates which ashnet library is being used, when applicable. In all cases, the license options have been made somewhat more uniform and consistent with those used when issueing license codes and those displayed by ABOUT.LIT. Note: There remain some "license options" which appear in the "about" display but are not chargeable and/or not associated with the PIC. These include LFS (Large File Support), W32IO (a variation of the file i/o library), VI(x.x.x) (Victor Imaging library version), and possibly others. 2. --- ATSD/ATE refinement: The window title set by ATE (typically "ATE Connection to ") is no longer overwritten by "A-Shell/32 Ver. x.x.xxx.x" on connection to an ATSD server. This was further confusing people who run both A-Shell P2P and ATE connections to the same server. 3. --- Windows resource leak bug fix: The proportional text status line handler was leaking Windows resources, leading to an eventual meltdown condition in which the A-Shell controls would cease to display properly. ============================================================================ A-Shell Development Notes Version 5.1.1213.0 (21 Apr 2011) ============================================================================ 1. --- ATE refinement: option to display "session status bar" added to configuration dialog. (Session status bar shows the session clock and progress indicator during host-client transfers.) 2. --- ATE refinement: option to close window on disconnect added to configuration dialog. Previously, and by default, this was always true, meaning that the ATE window closed when the session disconnected. When false, a message box will announce the disconnect (except when initiated from the client side), allowing you to see the last state of the application display when the disconnect occurred. 3. --- XTREE bug fix: Using the Dspwid option with an editable cell to limit the width of the edit box (primarily of interest with property sheet mode where an excessively wide column width may confuse the operator during editing) was having the side effect of always triggering the validation exit (-48) even if the field not changed during editing. 4. --- XTREE enhancement: Dspwid now works with combo box cells in property sheet mode to limit the width of the combo box. Note that the width specified includes the dropdown button, so you may need to adjust it upwards. 5. --- A-Shell/Windows bug fix: Close a loophole that could have caused A-Shell to lock up on startup. The problem was introduced in 1202, and occurred during logging of the startup trace message. 6. --- XTREE refinement: cformat codes M (multi-line) and W (wrap) now work in property sheet mode. But warning: specifying either code for any "column" effectively turns the feature on for all the "columns", since the option is only controllable at the display column level, and in property sheet mode, there is only one display column. 7. --- UNIX log file bug fix: Close a loophole allowing recursive log events (which can lead to stack overflow and crash). Also, protect rollover operation against multiple processes performing the rollover at the same time (which can lead to a gap in the seqeuence of log file archives and possibly a spurious error message during race conditions.) (Note: A-Shell/ Windows has had this fix since edit 1202.) ============================================================================ A-Shell Development Notes Version 5.1.1212.1 (12 Apr 2011) ============================================================================ 1. --- SET.LIT 1.2(152) now shows the "Sys bg", "Win bg", and "Win text" color settings (in the "SET TERMINAL" display) for ATE as well as A-Shell/Windows. 2. --- AUI_IMAGE/ATE (server side) bug fix: Opcodes 7 and 8 (acquire and select source) were timing out after 7.5 seconds. (Should be unlimited for these operations.) 3. --- Terminal input bug fix: An input string consisting of just a doublequote character was causing A-Shell to lock up. Also, and unmatched opening quote was being stripped from the input. (Should be stripped only if matched.) 4. --- Aux port printing refinement: the "printing..." status message now appears on the window status line (if visible), rather than the bottom status. ============================================================================ A-Shell Development Notes Version 5.1.1212.0 (8 Apr 2011) ============================================================================ 1. --- AUI_CONTROL enhancement: the month calendar control now supports multiple calendars in a single control (i.e. multiple months showing at a time). Because it is difficult to know how big the control coordinates must be in order to display a specific number of calendars, you may now replace the lower right coordinate (erow,ecol) with the number of rows and columns, respectively, of calendars to display, provided that the MBF2_PIXSIZE flag is specified in the ctype2 parameter. For example, srow=1, scol=50, erow=1, ecol=2 will create a control with two calendars side by size, starting at position 1,50. (If the two calendars would extend off the edge of the parent window, the starting coordinates will be adjusted so that the entire calendar fits in the window.) Note that the day states feature (MCS_DAYSTATES) is not compatible with multiple calendars. The MONCAL test program in [908,42] of the SOSLIB has been enhanced to illustrate the new technique. 2. --- Status line enhancement: The top and bottom status lines can now be displayed using a proportional font, as an alternative to the traditional fixed pitch font. To configure this option, the AG_STATUSLINES command has been enhanced: ? tab(-10,AG_STATUSLINES);stslin; ","; visible; ","; textmode; chr(127); Where: stslin = 1 (top), 2 (bottom), 3 (system) visible = 0 (invisible), 1 (visible) or "" (no change) textmode = 0 (fixed pitch), 1 (proportional) The default textmode is 0, but automatically switches to 1 if any GUI controls are created before an explicit AG_STATUSLINES command is issued. (The assumption here is that if you are using GUI text or other controls in the window, you would probably want the status line text to also use that mode.) Once you issue an AG_STATUSLINES command, the mode stays fixed (until another AG_STATUSLINES command changes it). Note that the number of characters allowed on the status line does not change between modes, even though typically proportional text is more compact. Also, the proportional text is tokenized (similar to the way the OPTIONS=GUI_SPC_IND feature works) so that any text tokens preceded by two or more spaces will be repositioned to start in the same position as it would have in fixed pitch mode. ============================================================================ A-Shell Development Notes Version 5.1.1211.2 (7 Apr 2011) ============================================================================ 1. --- APEX bug fix: Printers with descriptive device names longer than 32 characters were not getting properly saved as the default selection for the print dialog, causing the default to revert back to the first available printer. 2. --- APEX refinement: When the printer dialog from within APEX is used to change printers, APEX now switches to the newly selected printer (to use as the basis for preview). Previously the preview stuck with the original printer, which may have confused people (particularly if the characteristics of the two printers were different enough to affect the preview). 3. --- MX_NXTLIN bug fix: When used with CMD/DO files containing CRLF line terminators under UNIX, the returned lines were including a trailing CR character, which may have confused some programs. As an example, IF.LIT was falsely reporting an inability to find the matching ENDIF for an IF statement. ============================================================================ A-Shell Development Notes Version 5.1.1211.1 (6 Apr 2011) ============================================================================ 1. --- Revise the status line revision (see 1211.0) to go back to using the standard black on gray Windows colors used previously (rather than using a slightly lighter or darker variation of the main screen colors). 2. --- Month calendar bug fix: Date selection under Windows 7 was crashing A-Shell for calendars using the WM_POPUP window style. (This is evidently rare - calendars are usually implemented a child windows.) ============================================================================ A-Shell Development Notes Version 5.1.1211.0 (4 Apr 2011) ============================================================================ 1. --- Status lines revision/enhancement: The style of the top and bottom status lines (A-Shell/Windows and ATE) has been revised slightly to take up less space (by removing the beveling and leading). Also, the color scheme has been changed to be a slightly lighter (or darker) variation of the screen colors (at the time of the last clear screen operation), rather than the black-on-gray scheme used previously. At the same time, a new system status line option has been added (intended to display status information originating from or relating to A-Shell rather than to the application.) New menus options have been added to the Settings menu to enable/disable all three status lines. 2. --- ATE printing refinement: The LP TRACE flag on the server side is now forwarded to the ATE client during AUXLOC printing, making it easier to trace ATE printing issues. 3. --- Windows default printer tracing improvements: The steps involved in saving and restoring the default printer (used for previewing and for setting the initial default when displaying the printer selection dialog) are now traced (if the LP trace flag is set); this includes any errors (such as privilege violations preventing the settings from being stored in the registry). 4. --- ATSD/APEX refinement: the APEX preview switch is now ignored (with an appropriate warning message displayed) when printing direct from a Windows server ATSD connection. (APEX is not possible when printing from a remote server.) Previously, the switch confused the situation and resulted in no print out and no warning message. 5. --- ATSYNC 1.0(109) now complains about unrecognized switches, clarifying a confusing situation that previously occurred when an unquoted native directory spec was given (containing slashes, e.g. ATSYNC /vm/miame). The syntax help also now clarifies the need to quote such native specs. 6. --- MSGBOX.SBR enhancement: A new variation, MBTN_CANCEL_TRY_CONTINUE (6) produces the buttons "Cancel", "Try Again", and "Continue", and returns two new status values MBRC_TRYAGAIN (10) and MBRC_CONTINUE (11). This is actually just an alternate style to the older ABORT/RETRY/IGNORE message box (with ABORT being replaced by CANCEL, RETRY being replaced by TRY AGAIN, and IGNORE being replaced by CONTINUE). The new variation has been used in Windows since W2000, in preference to the older style. Actually, no change to MSGBOX was necessary to support this new style - it was just a matter of defining symbols for the new codes in ashell.def. The only internal change is that if you specify the new style but are not running in GUI mode, it continues to display in the old style, while behaving compatibly with the new style. 7. --- MSGBOX.SBR now checks if the CTRL and C keys are down, both on entrance and exit. If so, and CTRLC is enabled for the job, error 1 is triggered. Otherwise, it returns the new return status code 12 (MBRC_CTRLC). This should help alleviate a frustrating situation where a program was putting up error message boxes too fast to allow the ^C keyboard status to be detected between the MSGBOX calls (and CTRL+C is not recognized as an abort by the standard Windows message box itself). 8. --- Minor fix to confusion in the error message that appears when you try to launch a command line which contains "%" characters (typically from unresolved %ENV% variables). The "%" characters are interpreted as variable placeholders by the log message formatting routine, which was leading to the message showing a strange command line that didn't match the original. 9. --- Close a GPF window of opportunity in the AUI_CONTROL CTLOP_RSA opcode. 10. --- AUI_CONTROL bug fix: MBF_CMDLIN flag (which after all, isn't very distinctive with a value of 0) wasn't being handled properly when the CMD arg for the control contained a "%" (as in %ENV%) or a "ù" (i.e. chr(250)). 11. --- ATE bug fix processing MDF file (for menu customization) - menu items containing references to ATE-generated environment variables (such as %ATEPERMCACHE%) were being garbled. Environment variable expansion for menu items is now delayed until the menu is selected, rather than defined. 12. --- ISAM 7 statements (get next key and return it) now support dynamic variables. They do not, however, support auto-extension of arrays. So if you want to use an auto-extend array variable, you must first initialize each element, eg: DIMX IKEY(1),S,0,AUTO_EXTEND ... ! load ISAM keys into an auto-extending array of dynamic elements DO WHILE ERF(CH)=0 I = I + 1 IKEY(I) = "" ! must initialize element to get auto-extension! ISAM #CH, 7, IKEY(I) LOOP 13. --- MSBOXX.SBR enhancement: new flag BOX_PAR (&h00100000) may be used with BOX_WIN and BOX_SVA/BOX_RSA to automatically make the pop-up panel act as the parent to any controls (including TPRINT statements) created until the box is removed (with BOX_RSA+BOX_WIN+BOX_PAR). You could have done this yourself using MX_AUTOPARENT except that MSBOXX does not return an identifier for the panel; the BOX_PAR option overcomes that issue and automatically issues the necessary MX_AUTOPARENT calls. Note that with BOX_WIN, the box/panel is a GUI control, and thus you cannot output plain text on top of it; use TPRINT, DPRINT, AUI_CONTROL, and other GUI control generation statements instead of PRINT. Furthermore, with BOX_PAR, since the panel acts like a parent, the cursor position of controls and text to be placed on it must be adjusted to be relative to the box/panel rather than the screen. (The overall effect is similar to using a regular dialog box.) 14. --- MSBOXX.SBR enhancement: BOX_SVA with the BOX_WIN option now saves underlying controls, as well as text, and BOX_RSA + BOX_WIN will restore them. This allows BOX_WIN panels to effectively overlay areas containing either plain text or GUI controls, or both. 15. --- AUI_CONTROL refinement: When CTLOP_DEL is used to delete controls within a specified area (rather than to delete a single control by its ID), it is now more selective about identifying GROUPBOX and FRAME controls that should be deleted. Previously, as long as underlying GROUPBOX or FRAME intersected one of the boundaries of the specified area, it would be deleted. Now, it must be entirely within the specified area in order to deleted. This fixes a problem with overlappying popup frames (such as those created by MSBOXX with the BOX_WIN flag) whereby removing the top frame would delete an overlapping/underlying frame but not all of the controls within it. When the the frame was then restored, the Z order was upside down, so that the frame was obscuring the controls supposed to appear on top of it. ============================================================================ A-Shell Development Notes Version 5.1.1210.1 (22 Mar 2011) ============================================================================ 1. --- REGEX refinement: set the internal recursion limits to be more in line with the available stack space under the various platforms, to minimize the possibility of overrunning the stack with a rogue expression. The limit is 2500 levels of recursion for Windows and 10000 for UNIX. (If you hit the limit, REGEX will return error -21.) ============================================================================ A-Shell Development Notes Version 5.1.1210.0 (21 Mar 2011) ============================================================================ 1. --- EBCDIC Lives! ASCEBC.SBR and EBCASC.SBR (ASCII to EBCDIC conversion routines) now included in the Linux version. (Previously only in A-Shell/AIX.) 2. --- XTREE refinement to the way color bytes are handled. Previously, any color bytes in the answer array were always reset to blank on return to the application, and incoming blank color bytes were treated as "no change" rather than "no color". Now, the color bytes are left alone (passed back to the application the same way they were passed in), and blanks are treated as "no color" rather than "no change". (Note that on the XTROP_CREATE operation, any blanks in the answer array will be initialized from the data array.) Theoretically this change should be transparent to "virtually all" exiting applications, unless they explicitly set color bytes in the answer array to blanks with the intent of getting "no change" rather than "no color". (It is doubtful that any existing application would do such a thing since previously there would have no point in setting answer array color bytes to blank since they were all being set to blank automatically.) The change does have two advantages though: first, it is less confusing (programmers were always wondering why a blank color byte didn't give them "no color"); and second: it lends itself to much better ATE optimization. In a related refinement, blank color bytes in the data array now produce "no color" even when using XTROP_REPLACE with XTF_NOREDRAW. Previously, attempting to change existing colors during a REPLACE operation, and especially attempting to set an existing item or cell's color back to "no color", was ineffective if XTF_NOREDRAW specified. Note that the special color byte value "=" introduced in edit 1209 still works, but is now little different from " " in most cases. The only case where they differ is when a cell's color is potentially affected by more than one color byte (such as a cell color byte and a row color byte). In that case, a cell whose cell color byte is blank will inherit the row (or column) color, whereas a cell color byte of "=" would override the row or column color. 3. --- REGEX.SBR bug fix: Previously, the return of "sub-matches" was not working as expected. (Only the last sub-match was being returned, and into the first sub-match parameter.) Now all the sub-matches are returned into the corresponding parameters, including null sub-matches. (SUBCNT continues to return the total number of sub-matches, including the null ones.) 4. --- REGEX.SBR enhancement: You can now use an array, even an array of dynamic elements, in place of the individual sub-match parameters. To do so, you must first set SUBCNT to the maximum number of elements in the array, and in addition, set the new PCREX_SUBMATCH_ARRAY (defined as &h40000000 in REGEX.DEF) in the FLAGS parameter. For example: MAP1 SUBMATCH(20),S,0 ... SUBCNT = .EXTENT(SUBMATCH()) ! (i.e. SUBCNT = 20) FLAGS = FLAGS or PCREX_SUBMATCH_ARRAY XCALL REGEX,PATTERN,STATUS,SUBJECT,FLAGS,STPOS,MATCH,SUBCNT,SUBMATCH(1) On return, SUBCNT will be set to the total number of sub-matches, and the elements of the array SUBMATCH() will be assigned accordingly (up to the number of elements passed in to REGEX in the SUBCNT parameter). Note that the array may contain empty elements, as not all possible sub-matches (aka "capture groups") will match up to the subject string. Also, the maximum number of allowed sub-matches has been increased from 20 to 100. Note that when a capture group is effectively matched multiple times, only the last match for each capture group is returned. Thus the usefulness of submatches (particularly where REGEX is used as an aid to parsing) is mainly limited to simple capture groups that are to be matched zero or one time. ============================================================================ A-Shell Development Notes Version 5.1.1209.6 (18 Mar 2011) ============================================================================ 1. --- AUTO_EXTEND refinement: A DIMX array initially with 0 elements is now legal if the AUTO_EXTEND operation is specified. Previously it generated an illegal subscript error when the DIMX was processed. ============================================================================ A-Shell Development Notes Version 5.1.1209.5 (16 Mar 2011) ============================================================================ 1. --- Compiler bug fix (edit 482): Detect attempt to embed a new-style IF/ENDIF block in the body of an old-style IF statement. Previously it compiled ok but crashed upon execution. ============================================================================ A-Shell Development Notes Version 5.1.1209.4 (15 Mar 2011) ============================================================================ 1. --- Compiler bug fix (edit 481): "Copying ..." message was displaying the wrong ++include file name when the /LI (local include) option was specified. ============================================================================ A-Shell Development Notes Version 5.1.1209.2 (11 Mar 2011) ============================================================================ 1. --- (UNIX) Bug fix in save/restore area code: Saving / restoring areas across an XCALL AMOS boundary was leading to intermittent memory fault (or possibly a job hanging while burning up CPU). Problem was introduced since 5.1.1198 (although we're not sure exactly when, so an update is strongly advised for any version beyond 1198.) 2. --- Tracing improvement: The ashlog trace messages now contain both the main program and the current SBX, if applicable, e.g. "". Among other advantages, this will help clarify that any location counter (listed with Basic errors and segmentation faults) is relative to the current SBX, not the main program. 3. --- Tracing improvement: Memory allocations now indicate the "handle" (position in A-Shell's allocation table) as well as the address, making it easier to verify that allocations are being properly freed. 4. --- Startup terminal handshake refinement: For telnet/ssh connections where the terminal driver is "WYSE50", "AM65" or "AM75", the timeout on the initial probe to detect ZTERM or ATE on the client has been extended to allow for slower internet connections. Previously it was 1.5 seconds for the initial response and 0.25 for the subsequent responses; now it is 3.0 and 1.5 seconds, respectively. The symptoms of a premature timeout is three-fold: first, you may see a "Z" or "T" next to or instead of the initial dot prompt; second, server-supplied ATE licensing (if applicable) may not work; third, SET TERM will not give any indication of the ZTERM or ATE version. The downside of increasing the timeout is that when connecting from a non-ZTERM, non-ATE emulator using one of those emulations, there will be a longer delay on startup. 5. --- Windows printing refinement: It is now possible to select a custom paper size by its name, rather than just it's number (assuming that the paper shows up in the trace list of available paper sizes). This saves a step (running a test print with TRACE LP to see what number the custom paper was assigned), and also provides a degree of printer independence (since it isn't clear that the same number would be assigned to the custom paper by each printer). Warning: custom paper sizes is an area in which there is considerable variation between printer drivers. In some cases the driver properties dialog will allow you to define a custom paper size. In others, you may need to use the common Devices and Printers > Print Server Properties dialog to define a custom "form" (which may, or may not show up in the list of available paper sizes for a particular printer. But if it does show up, then you should be able to select it via PAPERSIZE=. ============================================================================ A-Shell Development Notes Version 5.1.1209.1 (10 Mar 2011) ============================================================================ 1. --- Internal cleanup of memory allocation tracing (to eliminate spurious trace warnings about invalid attempts to free memory allocations). ============================================================================ A-Shell Development Notes Version 5.1.1209.0 (09 Mar 2011) ============================================================================ 1. --- GDI printing enhancement: New printer init commands allow you define custom paper sizes, if the driver supports it (which is a big IF!): PAPERLENGTH = ### ; units are tenths of mm PAPERWIDTH = ### ; " " " Unfortunately, support for this feature varies widely among printer drivers. Some drivers do not support it at all. Others may support it only if you first set the driver default properties to "Custom" or "User defined" page size (which pretty much undermines the value of being able to set it from the software). In other cases, the feature is only supported in the latest version of the printer driver from the manufacturer. (This is a good general rule: whenever there is a problem with a printer, start by downloading the latest driver from the manufacturer website or the Windows update site.) If you attempt to set the paper length and width, and the driver does not support it, A-Shell will first try to set the paper to the PAPERSIZE value specified in your printer init or print file. (If you didn't specify one, then it will try PAPERSIZE=0.) If after that change, the driver still does not indicate support for individual page length and width, it will try again with PAPERSIZE=CUSTOM (aka 256). Finally if that doesn't work, it will log a trace message (regardless of the TRACE settings) which looks something like: Custom paper width/length not supported by printer driver! If you SET TRACE LP ON, you'll get more detailed trace messages showing the individual steps in the process. For printer drivers that don't support PAPERLENGTH and PAPERWIDTH settings in all modes, the most common workaround is to first set the printer to its "custom" papersize, which may then allow the application to override it with a different custom size. This is why A-Shell tries PAPERSIZE=256 (CUSTOM) automatically. HOWEVER, some drivers may indicate support for PAPERLENGTH and PAPERWIDTH, but in reality it only works when the printer is first set to CUSTOM. This problem can be detected in the LP TRACE as follows: DEVMODE Device:Brother HL-5250DN, Ver:793, Size:156, Extra:2360, ... Requesting paperwidth override to 150.0 mm (5.9 in) Requesting paperlength override to 140.0 mm (5.5 in) Updated page size: 5100 x 6600 pixels The clue here is that there was no attempt to set the papersize prior to requesting the paperwidth override, combined with the fact that the updated page size (5100 x 6600 pixels) doesn't match the requested size. In such a case, you should try adding PAPERSIZE=CUSTOM to the printer init file to see if that resolves the problem, which in the case of this printer, does, as shown in this trace: DEVMODE Device:Brother HL-5250DN, Ver:793, Size:156, Extra:2360, bin=1, duplex=1, paper=1, orient=1, copies=1, dmFields=0x1ff1f Requesting papersize #256 Requesting paperwidth override to 150.0 mm (5.9 in) Requesting paperlength override to 140.0 mm (5.5 in) Updated page size: 3532 x 3300 pixels See this case study of working with custom paper sizes on our forum for more details and tips: http://www.microsabio.net/ubb2/ultimatebb.cgi?ubb=get_topic&f=1&t=000124 Note that unlike PAPERSIZE, PAPERLENGTH and PAPERWIDTH have no corresponding //GDI commands (primarily because the support for them seems to vary so much between printer drivers that the benefits of a non-printer-specific GDI command seem negligible, at least at the moment. 2. --- GDI tracing refinements: The LP TRACE information has been expanded somewhat to help interpret/debug the behavior of the driver when requesting paper sizes. For example, when listing the available paper sizes, it now shows the actual dimensions of the available paper sizes and their full names (according to the driver) rather than just the standard code names and numbers. It also shows the initial and updated paper size (after attempting to set it), making it easier to identify whether the paper size setting is functioning as expected. For example, you may see the following messages (among others) in the trace: Initial page size: 1800 x 3000 pixels Requesting papersize #256 Updated page size: 2550 x 3300 pixels Final page size: 2550 x 3300 pixels (300 x 300 dpi) The above sequence indidates that the initial default paper size was 1800 x 3000 pixels. (See the "Final page size" message to get the pixels per inch or "dpi".) You requested papersize #256 (PAPERSIZE=256 or //PAPERSIZE,256), and this had the immediate and final effect of setting the paper size to 2550 x 3330 pixels. It will also show details about the attempts to set custom paper sizes, including the two-step process of pre-setting the paper size to a supported value and then overriding the length and width. 3. --- APEX paper handling refinement: When the paper size code is numeric and doesn't associate directly with a standard named paper size (like "LETTER"), the actual size will now show in the APEX title bar along with the numeric size code. For example: [Samsung ML-2010 Series - papersize: #257 (165.1 mm x 127.0 mm)] 4. --- XTREE enhancement: New special color index code "=" may be used wherever an RGB color index is used (such as to specify the background color in a cell) to reset the color back to the default. In most cases, this is no different than using a space, with the main exception being that when re-entering an editable tree, a color index of space is interpreted as meaning you want to preserve the current color (whatever it is), whereas "=" will reset it back to the default. This issue arises primarily when using XTF_NOREDRAW and XTROP_RESELECT, where XTREE avoids re-coloring anything except the editable cells with non-blank color index codes. Note that previously you could have accomplished the same thing by explicitly defining an RGB value of 0,0,0 (which is interpreted as "default color", rather than black) and specifying the associated index value. So the new mechanism is just a shortcut (avoids the need to define an extra RGB index, and standardizes the code so as to improve clarity). 5. --- Write protect error code correction: The Basic error code previously returned for attempt to write to a write protected file (e.g. one opened with the READ'ONLY attribute) was 29 (file already exist). It has been corrected to 24 (write protected). ============================================================================ A-Shell Development Notes Version 5.1.1208.1 (03 Mar 2011) ============================================================================ 1. --- Fix XTREE crash bug: Occurred when loading a list-match cell whose contents had no match in the list (typically an empty cell). (Introduced in 1208.0) 2. --- Log file cleanup: eliminate "!Bad Control" trace messages unless the XDEBUG trace flag is set. (These are common non-error warnings in Leo-generated programs when switching panels in a Tab control.) ============================================================================ A-Shell Development Notes Version 5.1.1208.0 (01 Mar 2011) ============================================================================ 1. --- GUI refinement: The standard icon set, housed in ashico1.dll, has been replaced with a new version containing "Vista-style" versions of the same icons. The new icons, which were previously available in ashico1v.dll, are quite similar to the old ones, but have a slightly enhanced style, presumably more aesthetically compatible with Vista and Windows 7. The old icon set has been renamed to ashico1x.dll, and will remain available for manual download on our website. (The two dlls are otherwise identical, so they can be substituted for each other by just renaming the dll.) 2. --- The maximum length of the ERSATZ= filespec has been increased from 70 to 160. 3. --- Aux printing enhancement: When both the server and ATE are at edit 1208+ and the server-side printer-init option PRTCOPIES is FALSE (this is the default for UNIX and whenever DEVICE=AUXLOC:), the server will now send just one physical copy of the printfile to the aux port and will tell the client how many copies to print. The previous method, in which multiple copies were generated on the server side, unbeknownst to the client, remains in effect for non-ATE clients and whenever the either the server or ATE client is older than 5.1.1208, and when PRTCOPIES=TRUE on the server side. The motivation for adding this further bit of confusion to an already confusing area is to overcome three negative aspects associated with generating the copies on the server side: a. If the server generates the copies, the client doesn't realize it has more than one copy, and thus if displaying a printer dialog, would show only one copy, which can confuse the user (who is expecting multiple copies). If the user tries to "correct" the numnber of copies, the result would be copies upon copies (e.g. 4 instead of 2, 9 instead of 3, etc.) b. APEX would show a single document consisting of the concatenation of the multiple copies. For example, if the original document had 4 pages and 3 copies were requested, APEX would show a 12 page document. (If you then redirect this to a non-paper device, like a PDF writer, you'd end up with a document containing the multiple sets of pages, which is silly.) c. Sending the original printfile to the client multiple times is not particularly efficient, and could cause significant delays for large files. 4. ATE command set enhancement: The AG_SPOOLCFG command now supports an optional copies parameter: TAB(-10,AG_SPOOLCFG);file,ptr,fsize,internal,switches,copies;chr(127); If copies is not specified, the default is 1. The value will be used by the ATE client to generate multiple copies of the subsequent printfile send via the AUXLOC: mechanism. This feature is primarily used within A-Shell when processing AUXLOC: printing requests. If used directly by an application, you should first verify that the client is ATE 5.1.1208.0 or higher (see MX_GETVER). There is no harm in sending the copies parameter to older versions of ATE, but it will have no effect (and thus the extra copies won't be generated). 5. Windows printing bug fix: Close a loophole which, in some obscure cases (depending on the printer driver and/or the sequence of events), requesting multiple copies in the printer dialog would result in both A-Shell and the printer driver generating copies (thus yielding the square of the desired number of copies, i.e. 4 instead of 2). 6. XTREE bug fix: Close loophole related to optimization which allowed the "|" prefix (to disable editing in an otherwise editable cell) to appear in the tree display. 7. XTREE enhancement: New cformat code P may be used with editable cells (cformat codes E, l) to indicate that the first position (after any cell code bytes such as the color byte used with cformat B) is reserved for either a space (indicating editable) or a "|" indicating that the cell is not editable. Note that the "|" prefix has long been supported as a code to indicate that the cell is disabled for editing, but it is sometimes awkward to use because of confusion over whether to shift the remaining characters over. The new P option allows you to reserve a position (same concept as with the background cell color byte used with B), which may be easier to use, depending on your application logic. Also note that feature is not necessary with the shared lists (cformat s used with CellList or CellListX), because in those cases, a space is already reserved for a prefix code, in which "|" is already an option. 8. Scroll-back mouse cursor bug fix: When the scroll-back feature was enabled (Control_Shift_UpArrow), when the mouse hovered over the main window vertical scroll bar, the mouse cursor was changing to a horizontal resizing arrow rather than a normal single arrow. 9. Print tracing/logging refinement: The OPR:SPOOL.LOG (UNIX) or ashlog.log (if Windows or the LP TRACE activated) now gives two values for copies (e.g. C=1/2), where the first number (1 in this case) indicates the number of copies processed locally by A-Shell, and the second number (2) indicates the number of copies requested to be generated by the remote agent (whether the spooler or a terminal emulator client). The LP TRACE also indicates the version edit number of the ATE client, if applicable (e.g. "edit=1208"). Together these may help debug issues relating to how copies are handled (particularly after the copies-handling enhancement described above). ============================================================================ A-Shell Development Notes Version 5.1.1207.0 (28 Feb 2011) ============================================================================ 1. --- XTEXT update: Since 5.1.1204, A-Shell has nominally supported TER15/HTS10 as well as TER18/HTS13, but experience has revealed problems with with trying to support both versions in the same A-Shell executable. (One symptom was that the //XTEXT GDI directive wasn't working with TER18, but did work with TER15.) So as of this release, only TER18.DLL and HTS13.DLL are supported if using XTEXT. On the plus side, there is a new feature which might possibly be useful (besides the hundreds of new features that we'll probably never use, and the hundreds of bug fixes that we may never appreciate): the ability to read (but not write) Word docx files. A new TXFF_DOCX symbol (7) has been defined in XTEXT.DEF, although for input (txc'docfmt'src), any value will work (other than TXFF_HTML), since the docx internal format is easily recognized. There is another new DLL, TXML2.DLL, which in conjunction with the Windows DLL MSXML# (# = 2+), is required for the docx import feature. 2. --- GDI Printing refinement: When a //GDI directive fails, the directive itself is printed (rather than the intended effect of the directive). In addition, if the directive failed because of a Windows error, then the error code will be printed at the end of the line, e.g. "(err 1400)". You can look up Windows error codes on the web, or translate them using MX_ERRNOMSG. 3. --- XTEXT/ATE bug fix: The server side was not recognizing http:// specs and thus was trying to transfer them as files to the client, without success. 4. --- XTEXT bug fix: In web browser mode, hyper-linking to pages with relative addresses (e.g. "./newpage.html") wasn't working. 5. --- XTREE bug fix: Editable cells were not always respecting the editing-related column flags (such as conditional validation) when the mouse cursor or caret was not synchronized with the cell currently being edited. ============================================================================ A-Shell Development Notes Version 5.1.1206.1 (25 Feb 2011) ============================================================================ 1. --- INPUT bug fix: Inputting from a file to an array of dynamic string variables was generating a protection fault if an INPUT operation was attempted after the previous INPUT hit the EOF. 2. --- xMASCB.SBR bug fix. A previous update had replaced the current version with an earlier one that had an issue with a bad file open mode. ============================================================================ A-Shell Development Notes Version 5.1.1206.0 (23 Feb 2011) ============================================================================ 1. --- PRINT.SBR enhancement: Two new MIAME.INI options allow for the time and/or user name to be added to the report header: SBR=PRINT_TIME ; Add time (hh:mm am) to date in header SBR=PRINT_JOBUSN ; Add user name to date in header If either option is selected, the "Run Date: dd-mmm-yy" header string will be shortened to just "dd-mmm-yy" with the time and/or user name appended. If both options are selected, the date format will be changed to "mm-dd-yy" (or "dd-mm-yy" depending on the LDF) to allow one more character in the name field without before limiting the maximum title or coname length. Note that the user name may be truncated to as few as 6 characters depending on the paper width and whether the time was also displayed. Also, if both are selected, the report title and coname strings will be truncated to 47 characters (down from the previous maximum of 50). 2. --- Log file cleanup: Resolve problem underlying two cases of log file messages warning about attempts to free memory not in table. (Problem wasn't serious, but looked bad in the log.) Also, eliminated unwanted rlock: log messages that would occur under certain exit conditions. ============================================================================ A-Shell Development Notes Version 5.1.1205.9 (22 Feb 2011) ============================================================================ 1. --- XTREE bug fix: Editable checkbox cells (T or T+) were not properly entering editable mode when clicked on. This was leading to failure of the check-all (^A), clear-all (^B), and undo (^Z) commands to work reliably. 2. --- XTREE bug fix: Exiting from an editable cell with ESC (or in some cases another keyboard command) was sometimes returning 0 for the xtr'xrow, xtr'xcol, xtr'targetrow and/or xtr'targetcol. ============================================================================ A-Shell Development Notes Version 5.1.1205.8 (22 Feb 2011) ============================================================================ 1. --- Combo box bug fix: fix issue with unresponsiveness of click on combo box drop-down button (introduced in 1205.7) 2. --- AUI_CONTROL bug fix: Adding a control within a groupbox whose parent was the main window (not a dialog) was failing to detect and replace a previous instance of the same control (leading to multiple controls stacked on top of each other, which could have strange results if their states were different). ============================================================================ A-Shell Development Notes Version 5.1.1205.7 (21 Feb 2011) ============================================================================ 1. --- Log file refinement: an improved trace added in 1205.6 was resulting in spurious "rocky_unlock" error messages in the log. 2. --- INFLD self-combo refinement: clicking on the drop-down button is now more responsive. Previously, in some cases it displayed an empty dropdown list rather than exiting on the first click. 3. --- SORTIT.SBR bug fix: the natural sort options were not sorting reliably when the last byte of a key for one element was adjacent to the first byte of a key for another element (e.g. when the key size was equal to the element size.) 4. --- AUI_CONTROL bug fix: close an extremely obscure window of crash opportunity relating to recreating checkbox controls through INFLD. ============================================================================ A-Shell Development Notes Version 5.1.1205.6 (20 Feb 2011) ============================================================================ 1. --- XTREE bug fix: close another loophole leading to a crash. 2. --- XTREE refinement: In a self-combo cell, changing the contents and then clicking the down-arrow now returns the updated cell contents. 3. --- PRINT USING MASK bug fix: Certain combinations involving a null or empty mask were causing an infinite loop of CRLF output. 4. --- ATSD refinement: In the rare case where a connection is lost while a process is in some kind of low-level loop outputting characters (like in the case just described above), the trace messages which are output to the log have been optimized (1 message per 256 chars, rather than 1 per 1). And after a million characters, the process is aborted. Note that it may be normal and even desirable for the process to continue to output a reasonable amount of characters while it responds to the disconnect error and finishes whatever it was doing, but at some point we have to assume that the process has run away. 5. --- ISAM bug fix: The MIAME.INI OPTION=ISAM_IDXLOK was causing the IDX auto- expand to leave the index locked, causing the next ISAM operation on the index to hang. (ISAM_IDXLOK is no longer recommended for Windows XP and beyond, and was never recommended for UNIX, but it is probably harmless.) 6. --- Record locking refinement (Windows): After about 15 seconds of looping on a lock request, A-Shell now displays the lock pending trace messages which previously only displayed if the LOCKS TRACE flag was set. (The idea is that after 15 seconds, chances are that the user will think the process has hung, which may lead to unnecessary tech support / debugging; the lock pending message, however cryptic, will at least make clear the cause of the delay.) The messages appear on the bottom status line. In another refinment, the bottom status line will be automatically enabled, if necessary (so the messages can be seen, without overwriting possibly important screen text on line 24). One further refinement: when the user hits ^C to abort from a lock wait, the lock event is now always logged to the ashlog.log file. (Previously, lock events were only logged if both the LOCKS and PERF TRACE flags were set.) ============================================================================ A-Shell Development Notes Version 5.1.1205.5 (18 Feb 2011) ============================================================================ 1. --- Minor enhancements to ISAM+XDEBUG tracing to help track down problem in field. ============================================================================ A-Shell Development Notes Version 5.1.1205.4 (15 Feb 2011) ============================================================================ 1. --- XTREE bug fix: Close a loophole in the optimization logic that was allowing an invalid memory reference to occur under the right circumstances. ============================================================================ A-Shell Development Notes Version 5.1.1205.3 (11 Feb 2011) ============================================================================ 1. --- ATE fix: Using the OpenSSH option was sometimes resulting in an initial terminal emulation of "dumb" rather than the selected one. ============================================================================ A-Shell Development Notes Version 5.1.1205.1 (10 Feb 2011) ============================================================================ 1. --- XTREE bug fix: clicking on an inactive tree was, in some cases, generating a GPF. (Problem introduced in 1205.0 with ToolTips.) ============================================================================ A-Shell Development Notes Version 5.1.1205.0 (08 Feb 2011) ============================================================================ 1. --- EVENTWAIT enhancement: You can now pass alphanumeric IDs for the PARENTID and CTLID parameters. (This eliminates one of the most common excuses for needing a numeric control ID.) Note, however, that the updated CTLID parameter will be returned as a number (although formatted as a string if you pass a string parameter). This shouldn't make any difference to your application as a string-formatted numeric control ID may be used anywhere an alphanumeric control ID may be used. 2. --- XTREE enhancement: You can now specify the tree's parent using the alphanumeric ID, by setting xtr'parentid=0 and then specifing an Advanced Coldef Option for any column of ParentID=xxx (where xxx is the alphanumeric parent ID). Note that unlike the normal case with Advanced Coldef Options, ParentID is case sensitive. 3. --- XTREE enhancement: New Advanced Coldef Option to specify a custom tooltip for the column: ToolTip= The limit on text size for any one tooltip is 1023 bytes. For all trees excluding property sheets, the tooltip will display when the mouse hovers over the column header and the tree is not currently editing a cell. (During cell editing, the only tree-related tooltip that will appear is the tooltip for that cell.) For property sheets, when not actively editing a cell, tooltips will display when the mouse hovers over a cell whose logical "column" has a tooltip. As with case above, during cell editing, the only tooltip display will be for the cell being edited. Known limitations: - Tooltips do not display while "editing" a checkbox or radiobutton cell. - There is no way to associate a tooltip with row headers. 4. --- XTREE bug fix: The automatic red coloring of cells with negative values was off by one column. (The column to the left of the negative value was being displayed in red.) Problem introduced around edit 1201. 5. --- XTREE internal optimization: COLDEF parsing has been reorganized to be more CPU efficient. (The improvement is probably undetectable though, except perhaps for trees with many columns and many advance coldef options.) 6. --- XTREE enhancement: it is now possible to use the list substitution feature without requiring that the column (or tree) be editable, by using the new cformat code "ll" (in place of "l" for combo box), or "ss" (in place of "s" for shared list). 7. --- XTREE bug fixes: Close a possible memory corruption loophole when loading more images than the initial imgcount. Close another possible memory corruption loophole in property sheet mode. ============================================================================ A-Shell Development Notes Version 5.1.1204.0 (03 Feb 2011) ============================================================================ 1. --- XTEXT (A-Shell/Windows/ATE GUI) update: support new version of underlying control modules (TER18.DLL and HTS13.DLL) in addition to the earlier versions TER15.DLL and HTS10.DLL. Currently there are no new features being exposed, but the updates contain numerous internal refinements and bug fixes that might be applicable to someone. Note that if you have TER18.DLL present, then you must also have HTS13.DLL. (You cannot mix TER18 with HTS10.) Also note that if TER18.DLL is not present, A-Shell continues to use the previous TER15.DLL and HTS10.DLL. (So if you encounter any problem with the updated DLLs, just rename or delete TER18.DLL to go back to the previously supported versions.) ============================================================================ A-Shell Development Notes Version 5.1.1203.3 (02 Feb 2011) ============================================================================ 1. --- XTREE refinement: Adjust typeahead logic introduced in 5.1.1197. The new rule is: On calling XTREE, if there is a pending event from clicking on the tree while it was inactive, then any unprocessed keyboard characters are stripped and ignored. In addition, if the XTF2_CLRDEFER flag is set and there is a virtual exitcode sequence pending, it is also stripped. Previously, the virtual exitcode sequence stripping was not dependent on the XTF2_CLRDEFER flag, which made it impossible to use XTREE as a kind of eventwait handler for click events that had already happened (but which hadn't been detected by the application yet.) ============================================================================ A-Shell Development Notes Version 5.1.1203.2 (31 Jan 2011) ============================================================================ 1. --- XTREE refinement: In property sheet mode (XTF2_PROPSHEET), if Dspwid=# is specified for an editable cell, it now determines the width of the edit box when a cell is being actively edited. This provides an alternate method (besides cformat "_") to adjust the width of the edit box to be more appropriate for the maximum number of characters allowed in that cell. If Dspwid is not specified, then the cformat "_" logic is used (see 1202.3 below), and if that isn't specified, the edit box width will be the same as the column width. Note that in the property sheet case, the units of Dspwid are taken to be characters, rather than grid units (as in the non-property sheet case.) ============================================================================ A-Shell Development Notes Version 5.1.1203.1 (31 Jan 2011) ============================================================================ 1. --- XTREE refinement: Remove complaint about the ANSARY width not matching the coldef expectation if the XTF2_ANSEQDATA flag is set. ============================================================================ A-Shell Development Notes Version 5.1.1203.0 (30 Jan 2011) ============================================================================ 1. --- XTREE enhancement: drag/drop between trees. To enable, set the new flag XTF2_DRAGDROP2 (&h00002000) in the source tree, and specify the new new Advanced Coldef Option, DragDropClick=###, in the destination tree. (### is the negative exitcode to be generated when an item (or items) from the source tree is/are dropped on to the destination tree. (For example, DragDropClick=150 will generate exitcode -150.) Notes: - This form of drag/drop (inter-tree) does not require any special mapping of the answer array (as is required with the intra-tree drag/drop activated by XTF_DRAGDROP). - Both forms of drag/drop are essentially independent (you can have either one or both). - No distinction is made regarding the exact position of the drop within the target control. The only information returned to the application will be the selection information for the source tree, and the DragDropClick exitcode from the target tree. - It is left to the application to complete the operation signified by the drag/drop action. (Typically this would involve copying the selected items from the source tree to they destination tree, and perhaps removing them from the source tree.) The sample program XTRA4.BP in [908,21] has been completely rewritten to demonstrate a simple shopping cart application using this capability. 2. --- New GDI printing directive: //POLYGON,MODE,BRUSH,X1,Y1,X2,Y2,X3,Y3{...X10,Y10} This draws a polygon based on up to 10 points. Straight lines are drawn between the points using the current pen (including a line from the last point back to the first). The points are specified in the current map mode. MODE specifies the polygon fill mode: 0: Use existing mode (whatever was last set) 1 or "ALTERNATE": Fills in the area between odd and even sides 2 or "WINDING": Fills in any area with a non-zero "winding value". The difference between the modes is not significant for simple enclosed polygons, but becomes apparent with polygons whose sides cross over themselves. An illustrative example would be a five-pointed star, whose lines intersect to create a pentagon in the middle. The ALTERNATE fill mode would fill in the points, whereas the WINDING fill mode would fill in the entire region. The "winding value" is defined as the number of times a pen used to draw the polygon would go around the region. 3. --- New icon: A-Shell now defaults to using the new "turquoise sea shell in a white box" icon. Don't worry, this isn't part of some Madison Avenue corporate re-branding scheme, so please don't start any boycotts or letter-writing campaigns to preserve the old green acorn icon (which will remain available indefinitely, via the "-g acorn" command line switch). There are also two other new variations included in the executable which can be selected via the -g switch: ash1t (a darker blue shell with a transparent background), and ash2b (a darker blue, more curvaceous shell in a white box). 4. --- ATE serial passthrough fix: the "progress bar" in the lower right corner was staying on, even after the serial passthrough was closed. ============================================================================ A-Shell Development Notes Version 5.1.1202.6 (29 Jan 2011) ============================================================================ 1. --- XTREE bug fix: Certain editable multi-select trees were becoming scrambled when updating the editable cell data from the answer array. ============================================================================ A-Shell Development Notes Version 5.1.1202.5 (29 Jan 2011) ============================================================================ 1. --- Buffer overflow loophole closed. A loophole in a commonly used memory copying routine which could have allowed a buffer overflow if passed a size <= 0 bytes. (There are an unknown number of possible places where this might have happened, but was discovered when passing XTREE a value of zero for the addcnt parameter.) 2. --- XTREE internals reorganization: A considerable amount of code within XTREE has been reorganized to make it easier to maintain. In theory this should not introduce any new behavior, but it is noted here to identify the cause should any such unwanted behavior surface. ============================================================================ A-Shell Development Notes Version 5.1.1202.4 (26 Jan 2011) ============================================================================ 1. --- XTREE enhancement: Property sheet mode now supports multi-level. To configure this, specify the cformat code "@" for each "column" (i.e. each item) that should appear at level 1. Columns (i.e. items) without this code will appear at level 0. To designate an item at level 2 or below, add additional "@" codes (one per level). For example: coldef = "1~1~Shipping Info~S~~" ! Level 0 (no "@") coldef = coldef + "2~30~Address~SE@~" ! Level 1 (one "@") coldef = coldef + "32~30~City~SE@~" ! Level 1 (one "@") ... 2. --- XTREE enhancement: New cformat code " " (blank) for "no strip". When used in conjunction with a Mask, causes any leading spaces introduced as a result of the mask formatting to be preserved within the field. (Normally they are stripped before applying the column's justification.) This rather obscure feature may be useful in property sheets where you want to right justify some fields, but don't want them justified all the way to the right edge of the edit column (which may be wider than appropriate for the items in question, due to other, longer text items). For example, if you have some numeric items that you want to right justify (so that they line up with each other) but don't want way over at the right edge of the column, you can specify the combination of "<" (left justify), " " (no strip), and "Mask=###,###,###,###.##". The "<" will force the data to be left justified in the cell, but the no strip option will effectively preserve right justification (provided that you are using a fixed pitch font). Typically in this case, you'll want to make the column and mask wider than you would otherwise need, so that the displayed values are pushed farther to the right. The xtra15.bp sample program has been updated to illustrate this. A-Shell Development Notes Version 5.1.1202.3 (25 Jan 2011) ============================================================================ 1. --- XTREE enhancement: Column alignment in property sheet mode now works as expected (i.e. gets translated to cell alignment for the cells in the values column). Note that if you are using anything but left justification, and if there is any possibility of cells extending logically beyond the control width, you should xtr'closedended mode and XTF2_AUTOEXPCOL. Otherwise, you may end up column data that doesn't appear unless you use the horizontal scroll bar to scroll to the right. 2. --- XTREE enhancement: New cformat code "_" (underline) may be used with editable columns to cause the edit cell to shrink to fit only the number of allowed characters (so as to not give the user an initial false impression of the number of allowed characters). This will probably only be reasonable when a fixed pitch font is used. 3. --- XTREE refinements: xtr'closedended now works better when there are row headers. ============================================================================ A-Shell Development Notes Version 5.1.1202.2 (25 Jan 2011) ============================================================================ 1. --- Compiler bug fix (edit 480): Fix problem introduced in edit 479 causing "FOR" statements with a "STEP" clause to generate syntax errors. ============================================================================ A-Shell Development Notes Version 5.1.1202.1 (24 Jan 2011) ============================================================================ 1. --- XTREE bug fixes: clean up various issues related to property sheet mode. 2. --- Compiler bug fix (edit 479): Fix an additional problem with += and -= operators, introduced in edit 478 (5.1.1202.0), leading to bogus unmapped variable errors. ============================================================================ A-Shell Development Notes Version 5.1.1202.0 (23 Jan 2011) ============================================================================ *** Beta warning: the two XTREE enhancements described below involved a considerable number of internal structural changes within XTREE, so it is highly possible that despite in-house testing, some side-effects may be revealed during beta testing. (So if you use XTREE, this would not be a good update to put immediately into production!) 1. --- XTREE enhancement: New flag XTF2_ANSEQDATA (&h0001000) may be used to indicate that the layout of the answer array is the same as that of the data array. The main limitation is that it does not support drag/drop or multi-selection. (It may be extended in the future to the more general case). The current primary motivation is to permit the use of same array (or identically formatted ones) for both the answer and data in trees involving checkboxes. (You were already allowed to use the same array for both parameters, but it wouldn't have worked with checkboxes due to the normal rule requiring checkboxes to be placed at the start of each row in the answer array.) The flag is set automatically when you pass the same variable for both the answer and data parameters. 2. --- XTREE enhancement: "property sheet" (aka "vertical") mode. This is specified by the new flag XTF2_PROPSHEET (&h00000800). A "property sheet" is a control made up of two columns and a variable number of rows; the first column contains labels (attributes); the second column contains the data corresponding to the labels (attribute values). There was nothing stopping you from previously implementing such a structure with a two-column XTREE. But it was difficult, if not impossible, to support a variety of different data formats (checkboxes, radio buttons, different widths of editable text, lists, etc.), since in the property sheet configuration, they would all be in the same column and the XTREE configuration scheme tends to limit each column to a single data format. The XTF2_PROPSHEET option addresses this by effectively rotating the tree 90 degrees so that the columns (according to the coldef) are displayed as rows. The column titles become the row headers or labels. But there are several limitations to keep in mind: - You are limited to a single row of data (which appears as a column). In fact, rather than specify an array of one item, you can just specify a singular structure (whose fields line up with the column definitions.) Since the usual object is to edit this structure, you can specify a copy of the same structure for the answer parameter (remember to set the XTF2_ANSEQDATA flag), or specify the same variable for both parameters. - You cannot define any hidden columns. (This includes the columns that would be needed to support any row-oriented features like row color, row font. - None of the following are supported: XTF_MSEL, XTF_DRAGDROP, XTF_REORD, XTF_SORT, XTF_MLVL, XTF_SPLIT. - Column colors (RBGbg, RGBfg) are not (yet) supported. But you can assign background colors to individual cells using cformat B. See the new SOSLIB sample program, XTRA15.BP, for an example of property sheet mode. (Download from http://www.microsabio.net/dist/soslib/) 3. --- MX_SHELLEX refinement: remove 260 character limit on objectspec, and increase the 500 character limit on the parms argument to 1024. There remains an overall limit of 4096 bytes for all of the arguments combined. If the limit is exceeded, the routine will return with status 8 (out of memory). 4. --- Compiler bug fix (edit 476): A prior edit (475) (see 1198.2 below) introduced a bug which effectively disallowed the use of multiple-dimensioned array variables in a FOR statement. 5. --- Compiler bug fix (edit 477): The +=, -=, *= and /= operators (introduced in compiler edit 475; see 1195.0 below) were treating subscripted variables as if they were scalars. When using /M, this would have most likely caused a variable-not-mapped error. But without /M, or in the case where there was a mapped scalar of the same name, statements of the form: var1(a) += b would have been interpreted as var1(a) = var1 + b which obviously would have been semantically (but not syntactically) wrong. 6. Compiler bug fix (edit 478): sizeof() was not allowing subscripted variables. It was also not working with private variables. 7. --- INPUT #CH refinement: A ^Z at the end of a file will now be stripped from the returned variable, except in INPUT RAW mode. See the forum post http://www.microsabio.net/ubb2/ultimatebb.cgi?ubb=get_topic;f=3;t=000681#000004 for a detailed discussion of the issue. 8. --- GDI printing enhancement - four new GDI directives implemented: //XOFFSET,# //YOFFSET,# //XORIGIN,# //YORIGIN,# These may appear within the top 8 lines of a printfile (and before any printable text) to get the effect of the equivalent XOFFSET, YOFFSET, XORIGIN and YORIGIN printer init file commands (which see in the Setup Guide at http://www.microsabio.net/dist/doc/conref/xoffsetyoffset.htm and http://www.microsabio.net/dist/doc/conref/xoriginyorigin.htm ). Note that the arguments are always in twips, independent of the map mode. 9. --- Icon button bug fix: prior fix introduced in 1190.5 relating to a problem with icon buttons, had side effect of causing icon buttons to never lose their visual "focused" status after getting it. 10. --- INFLD refinement: ^C now returns exitcode 10 when both TYPE V and |K are set and we are in GUI mode. |K normally causes ^C to be treated as copy-to-clipboard, but now when V is set, it forces the exitcode 10 action. 11. --- XTREE bug fix: When an exit from an editable cell involves two possible exitcodes (-48 for validation, plus something else such as from a click event), the other exitcode is now returned rather than the -48. (This restores the original behavior prior the changes to support multiple exit codes in 5.1.1196). Note that if you specify the xinfo parameter, the -48 will still be in the list, but it will now be in the second position. Also note that you can detect whether cell validation is needed in such a case by looking at the XTR'XVALIDATE field. 12. --- Log file bug fix: close a loophole which rarely resulted in a harmless but alarming error message to display during the process of rolling over the ashlog.log file. 13. --- Memory allocation tracing refinement: eliminate a couple of instances of "bad request to free memory" messages in the log when the MALLOC trace was set. (The message was harmless, but disturbing.) ============================================================================ A-Shell Development Notes Version 5.1.1201.8 (17 Jan 2011) ============================================================================ 1. --- XTREE/ATE server-side bug fix: Close a loophole in the optimization logic which allowed for a GPF if XTREE was called without an XTRCTL param. ============================================================================ A-Shell Development Notes Version 5.1.1201.7 (14 Jan 2011) ============================================================================ 1. --- INFLD date bug fix: In some cases, setting XMIN=0 was not allowing a blank date. (Problem introduced in recent date-related patches.) 2. --- INFLD form bug fix: A form that was longer than MAXCHARS was leading to wierd formatting in conjunction with the Z (zero fill) type code. ============================================================================ A-Shell Development Notes Version 5.1.1201.6 (13 Jan 2011) ============================================================================ 1. --- INFLD font resizing bug fix: In fields using ||f but where the "fixed pitch edit" option in the Misc Settings is not set, resizing the window was causing the font in the active INFLD field to end up smaller than it otherwise should have been. (This probably became more noticeable with 5.1.1200.) 2. --- File hook memory leak fix: In some cases, the leak caused A-Shell to try to release a block of memory that had been re-assigned to something else, which in turn could have led to a memory fault. ============================================================================ A-Shell Development Notes Version 5.1.1201.5 (12 Jan 2011) ============================================================================ 1. --- XTREE bug fix: In some cases, hitting ESC in a simple-selection tree was returning ANSWER=1 (along with EXITCODE=1), causing problems for some applications which were relying on ANSWER coming back 0 on ESC. ============================================================================ A-Shell Development Notes Version 5.1.1201.4 (10 Jan 2011) ============================================================================ 1. --- XTREE refinement: Using XTROP_CREATE instead of XTROP_REPLACE when updating an existing tree now disables an optimization (started in 1196) that avoids pre-deleting the existing row data before replacing it with the new data. That optimization sometimes leads to a problem with row colors, whereby you have a row color set to blank expecting to get white, but instead you get whatever color was previously in that row. You can also avoid that problem by turning off XTF_NOREDRAW, or perhaps most explicitly, by defining an explicit RGBxx entry for white (255,255,255) and using it instead of blank when updating rows in an existing tree. ============================================================================ A-Shell Development Notes Version 5.1.1201.3 (10 Jan 2011) ============================================================================ 1. --- GUI rapid click bug fix: Revisit fix from 1200.1 relating to rapid clicks on the same button. (Wasn't always working as intended.) 2. --- Windows directory utilities bug fix: The basic directory utilities to lookup a directory, create a directory and delete a directory were treating directories with a trailing backslash as if different from the same directory without the backslash, leading to some confusing errors in various file operations. ============================================================================ A-Shell Development Notes Version 5.1.1201.2 (07 Jan 2011) ============================================================================ 1. --- INFLD bug fix: date swap (>) was not working properly with assymetric date format masks (e.g. 99/99/9999). ============================================================================ A-Shell Development Notes Version 5.1.1201.1 (06 Jan 2011) ============================================================================ 1. --- Bug fix: close a tiny loophole allowing for a possible bogus attempt to release allocated memory, which may have caused A-Shell to crash. (The problem has only been recognized on a single Linux system, and the code has been in use for years, so the problem is pretty rare.) ============================================================================ A-Shell Development Notes Version 5.1.1201.0 (06 Jan 2011) ============================================================================ 1. --- (Windows) New Subroutine to create encoded bar string for new US Post Office intelligent bar codes: XCALL USPSBS, TRACKSTR, ROUTESTR, BARSTR, STATUS Where: TRACKSTR (S,21) [in] Tracking string ROUTESTR (S,12) [in] Route string BARSTR (S,66) [out] Returned encoded bar string STATUS (F) [out] Returns 0 for success, else: -1 = parameter error -2 = unable to load USPS4CB.DLL -3 = unable to locate the USPS4CB() function -99 = not supported on current platform >0 = invalid TRACKSTR and/or ROUTESTR The USPS4CB.DLL routine is available from the post office website http://ribbs.usps.gov/OneCodeSOLUTION/ and must be saved somewhere in the path (or in the A-Shell bin directory). See the publications on the above web site for details on creating the TRACKSTR and ROUTESTR values. The returned BARSTR is a character format equivalent of the graphic bar code, designed to be easy to convert to the graphic format. (See the documents on the above web page for specifications.) See the SOSLIB directory [908,52] for sample and test programs. Note: this is a preliminary beta release and may be subject to change before it is stabilized. ============================================================================ A-Shell Development Notes Version 5.1.1200.1 (06 Jan 2011) ============================================================================ 1. --- Triad catalog refinement: improved tracing. 2. --- GUI click refinement: Rapid clicking on a single button works better now (up to 8 clicks per second should work). 3. --- INFLD fix: TYPE |Z wasn't overriding TYPE |K. Thus ^Z was performing "undo" rather than exiting with exitcode 18. 4. --- INFLD fix: 8 digit dates with the date swap (>) option and a 99/99/9999 form (f) were not formatting correctly. 5. --- INFLD fix: Right justification was not working properly in GUI mode in conjunction with MAXPT. (The display of the added digits were often getting truncated by the end of the field.) ============================================================================ A-Shell Development Notes Version 5.1.1200.0 (05 Jan 2011) ============================================================================ 1. --- INFLD enhancement: date fields (except for the GUI date picker) can now use a "form" (TYPE "f", SETDEF set to something like "99/99/99"). This provides a sort of middle way between the Windows date picker control (which some people don't like), and a standard date field (in which the separators don't appear until after hitting ENTER). 2. --- INFLD enhancement: New TYPE ||D allows a date field to be filled with zeroes. 3. --- INFLD refinement: When using TYPE Z (zero fill), leading zeroes are no longer stripped on entering the field for date fields or form fields. (Stripping the leading zeroes in such cases may mess up the alignment of the form or the interpretation of the individual digits in the date.) 4. --- INFLD XMAX vs MAXCHRS bug fixes: In several cases, INFLD was using the XMAX value where it should have been using the MAXCHRS value, which limited your ability to use XMAX to expand the field with without changing the logic of the control. (For example, with dates, the format should be based on MAXCHRS not XMAX. For zero fill, it should fill to the MAXCHRS size, not the XMAX size.) Note that when MAXCHRS not specified, it is treated as equal to XMAX, so this only affected cases where you explicitly set the two to different values. 5. --- GUI edit control refinement: Fixed pitch fonts used in edit controls were often slightly too wide for the control, causing the last character(s) to be truncated. This should reduce or eliminate the need to resort to increasing XMAX in order to allow more space for the too-large characters. 6. --- XTREE bug fix: an internal timer overflow was in some cases making it impossible to exit from the first cell editing operation of an XTREE session. The problem was introduced around 1197.3, and only affected machines on which A-Shell or ATE runs on and which have been up for more than about 24 days, cycling on and off every 24 days after that. Since normal workstations are typically rebooted more often than that, the problem is mainly associated with Windows servers and thin (or RDP) clients (where XTREE is actually running on the server). So if you have such an environment that uses XTREE editable cells, even if you haven't experienced the problem, you should definitely update if running anything between 1197 and 1199. Or, be prepared to reboot your machine if the problem surfaces. ============================================================================ A-Shell Development Notes Version 5.1.1199.0 (03 Jan 2011) ============================================================================ 1. --- INFLD GUI enhancement for Windows Vista and above: Date/Time fields (using the Date Picker control) now resize themselves as needed (for Vista and above) to match the optimum width required for the control's current style. For versions of Windows prior to Vista, it will continue to try to estimate the necessary width, but this is error-prone due to the difficulty of knowing all of the factors that affect the visual appearance of the control. And for cases where you need more width than the default, you can use a larger XMAX value to adjust it. (Note that when using XMAX to set the display width of a Date/Time control, make sure to use MAXCHRS to set the number of editable characters (e.g. 6 or 8). 2. --- INFLD GUI refinement for Windows versions prior to Vista: The automatic width expansion logic for Date/Time fields using the Date Picker control has been adjusted to allow a bit more room when using a fixed pitch font. (Previously, these were often getting truncated unless you manually expanded the width using the technique described above.) 3. --- INFLD enhancement: The TYPE code "u" now works for both date/time fields and numeric fields to force INFLD to use the relevant formatting options from the Language Definition File. For dates (D and d), if the "u" appears prior to the D or d and the LDF specifies the DDMMYY format, INFLD effectively sets the "U" (European date format) code. For numeric fields, the "u" may appear anywhere in order to use the decimal point and thousands separator characters from the LDF. Note that the "." keyboard character will be converted to the LDF-specified decimal point character (to facilitate numeric keypad operations). ============================================================================ A-Shell Development Notes Version 5.1.1198.4 (28 Dec 2010) ============================================================================ 1. --- GUI click timing adjustment: refine the change in 1198.2 to shorten the time window for buttons and static control clicks to allow 1 new click event for the same button every 0.5 seconds. ============================================================================ A-Shell Development Notes Version 5.1.1198.3 (24 Dec 2010) ============================================================================ 1. --- XTREE refinement: You may now determine how many rows are considered when optimizing the column widths. Previously, it always looked at the first 100 rows, and this remains the default. But you can override the default by specifying the new Advance Coldef parameter: ColOptRows=### (Short for Column Optimization Rows.) If ### is positive, it indicates the number of rows to consider for that column (max is 32767). If negative, it indicates the percentage of the total rows to consider. Any column that does not have a ColOptRows=### parameter will use the default # of rows (normally 100). To change the default, specify ColOptRows=### with the zero column. Note that the entire point of this exercise is to balance the column optimization with performance. The more rows that have to be considered, the longer it takes to arrive at the optimum width. The default of 100 rows is generally sufficient for "pretty good" optimization, and with negligible performance overhead. But, depending on the variability of the data in each column it may be that much less would be sufficient, or much more insufficient. As a rule of thumb, figure about 25 cells per millisecond of optimization time. So for a 1000 row x 30 column grid, the default optimization (looking at 100 rows) would take about 100 ms, while looking at all 1000 rows would take 10 times longer, or 1000 ms, which will be noticeable. But if only one of the columns has data of widely varying width, you could set ColOptRows=-50 (i.e. look at the first 50% of the rows) for that column, and perhaps change the default (for the other columns from 100 rows to 10 rows). That would reduce the number of cells considered from 30000 to 790, and thereby reducing the total optimization time from 1000 ms to about 27 ms. Although the length of this discussion may imply that it is very important to get the column width optimization right, keep in mind that the only downside of too little optimization is that some columns many initially be too narrow to show the widest cells without truncating, thus forcing the user to manually adjust the column width in order to see all the data. (Which can be done by either dragging the right column border, or double-clicking on it, in which case it optimizes that column considering all the rows.) On the other hand, too much optimization just wastes time, reducing responsiveness. But that isn't likely to become noticeable until you have upwards of 5000 cells to consider. ============================================================================ A-Shell Development Notes Version 5.1.1198.2 (23 Dec 2010) ============================================================================ 1. --- Compiler (475) bug fix: In /x:1 or /x:2 mode, it was failing to detect and report the following two kinds of errors: FOR I=1 TO 2 PRINT I:NEXT I ! (missing :) FOR I = 1 TO 2 ... NEXT J ! (mismatch FOR/NEXT var) 2. --- GUI bug fix: close a timing loophole which was causing the first click on a control to sometimes be ignored, if coming within 1.5 seconds of the last click on some other control. ============================================================================ A-Shell Development Notes Version 5.1.1198.1 (17 Dec 2010) ============================================================================ 1. --- ATE bug fix: close a loophole that was intermittently allowing garbage to be transmitted to the server at the end of the CTLOP_INFO operation. Typically this caused no problems, but occasionally the garbage contained control characters (like ^C) that would abort the server program. The problem has been around for a long time, but happened so rarely that it was just now noticed. (Unrelated to any of the other changes in 1198.) ============================================================================ A-Shell Development Notes Version 5.1.1198.0 (16 Dec 2010) ============================================================================ 1. --- This release consolidates various ATE/XTREE related performance optimizations ` introduced since 1197.0, which require both sides (server and client) to be at least at this level to take advantage of. (If either side is lower, then the optimization is not activated.) 2. --- Windows GDI printing bug fix: The %# (total pages) macro was being fooled by a trailing FF character into adding an extra page to the total, even in cases where the FF would have been removed by subsequent processing. This was mainly noticeable in AUXLOC: printing, but possibly other scenarios as well. 3. --- (Linux version) TLS support reinstated (after being inadvertently turned off for the last few versions). 4. --- XTREE enhancement: A new flag, XTF2_NORESPONSE, may be specified to eliminate the return of any response information for a particular XTREE call. This is purely of interest in the ATE environment as a performance enhancement (since the return of response information causes the application to have to wait for the network turnaround time, which is small but adds up.) In order to be effective, it must be used along with the XTF_NOSEL flag (which is used when you want to display some data without waiting for a user section or editing action). Warning: don't use it along with XTR'CTLNO = -1, since in that case you won't get back the updated tree control number, which could make it difficult to reference the tree on subsequent calls. ============================================================================ A-Shell Development Notes Version 5.1.1197.6 (15 Dec 2010) ============================================================================ 1. --- File hook bug fix: HFF_DATA_WAS flag was not working with ISAM 1.x. A new sample hook program, FHOOKTST3.BP has been added to the SOSLIB to demo/test ISAM hooks. 2. --- File hook bug fix: The "was" data (prior contents of the record) being passed to the hook was essentially garbage, except for the first null byte, when no such data was available to pass. (This occurs when the last record read prior to the write was a different record #, or there is some other problem making that data unavailable.) Now the buffer will be full of nulls. (See next item below.) 3. --- File hook refinement: When there is no "was" data available to pass to the hook routine (in response to the HFF_DATA_WAS flag), A-Shell now sets a new flag, HFF_DATA_WAS_NA (&h00010000) in the flags field in the hook environment structure passed to the hook routine. This allows the hook routine to distinguish between an empty prior record and unknown prior record contents. (The prior contents of the record can only be supplied to the hook routine if the last record # read is the same record # being written.) ASHINC:HOOK.DEF has been updated with the new flag, and the sample hook routine FHOOK1.BP (SBX) has been updated to show testing the flag. 4. --- PDX Email Type 4 bug fix: ashnet.dll 1.3.121 fixes a problem in which the port you specified in the //PDFX,Email.SMTP.Port command was effectively ignored (causing it to try the default port 25 instead). Also, very long messages (displayed in the debug message window for failed connections) were being truncated after 2048 bytes (not enough for some servers when using SSL connections), thus preventing you from seeing what the actual error preventing the connection was. (This limitation was in A-Shell itself, not in ashnet.dll.) ============================================================================ A-Shell Development Notes Version 5.1.1197.3 (09 Dec 2010) ============================================================================ 1. --- XTREE bug fix: Various problems related to the recent optimization which avoids re-processing the coldef when it hasn't changed have been resolved. 2. --- Combobox refinement: The built-in search mechanism (that stopped on the first match) has been replaced with a smarter routine which locates the best match first. (This fixes an issue whereby a field containing, say, "Jeans" might match an entry in the list containing "Jeans / Baggy" if that entry appeared before the plain "Jeans" entry.) This affects both INFLD and XTREE comboboxes. 3. --- XTREE bug fix: Filter out late-arriving messages for trees that have just exited from XTREE control. These were previously being mis-handled as inactive click messages, which was often interfering with the application's intent when re-entering the tree. ============================================================================ A-Shell Development Notes Version 5.1.1197.1 (07 Dec 2010) ============================================================================ 1. --- Context menu bug fix: Clicking on context menu options attached to dialogs was sometimes having no apparent effect. 2. --- AG_WINEXEC bug fix: When using the $COPY and $MOVE macros, the FLAGS argument was being ignored (making it impossible to overwrite existing destination files.) 3. --- COM interface refinement: Accented characters may now be passed to COM subroutines as string parameters. Previously, only 7-bit characters were being properly marshalled across the COM interface. This was preventing FTPDLX.SBR and ATE/FTP transfers from working with files containing accented characters in the path or filename. ============================================================================ A-Shell Development Notes Version 5.1.1197.0 (03 Dec 2010) ============================================================================ 1. --- VUE bug fix (306) - The >YANK command was reporting lines too long (and showing them padded with @@@@. (Bug introduced in 1196.6.) 2. --- AIX refinement: Implement the same patch for AIX as was described for Linux in edit 1192.6 below. 3. --- XTREE bug fix: close a loophole in which it was possible, when clicking rapidly between two XTREEs, for the user focus and the application focus to get separated. 4. --- XTREE bug fix: right-clicking on an inactive tree was potentially returning a negative (i.e. high binary) value for xtr'targetrow. 5. --- XTREE bug fix: close a loophole in which clicking out of an XTREE on the dropdown button of a combo was resulting in a second, delayed, exitcode for the combo, such that the next control to get the focus after the combo would immediately exit as if the combo had been clicked again. 6. --- XTREE enhancement: It is now possible to control whether the +/- buttons (used with multi-level mode to expand/contract levels) are visible or not. Previously, although the documentation suggested that the xtr'showbuttons0 and xtr'showbuttons fields controlled this, the fields were ignored and the buttons were always made visible. The interpretation of the two fields has been upgraded to preserve compatibility with existing programs but to now allow the application to hide the top level or lower level buttons, if desired. The field meanings: - xtr'showbuttons0 is no longer used (i.e. ignored as before but now officially so. - xtr'showbuttons: 0 or 1 = show the buttons +2 (XTSBF_HIDE0) causes the top level buttons to be hidden +4 (XTSBF_HIDE) causes the lower level buttons to be hidden The new symbols and updated comments are in the XTREE.DEF, XTREE.MAP, and XTREE.SDF files. ============================================================================ A-Shell Development Notes Version 5.1.1196.7 (29 Nov 2010) ============================================================================ 1. --- EVENTWAIT bug fix: Control+UpArrow stopped working (i.e.,failed to generate exitcode -53 when the EVW_CTLARROW+EVW_VAREXIT flags were set), around edit 1192 (as a side effect of implementing scroll-back). 2. --- XTREE bug fix: In some cases, simple selection trees were not returning the selected row upon double-click or ENTER. (Problem introduced in 1196.x) 3. --- XTREE bug fix: Re-entering a tree in edit mode was often resulting in the tree starting in selection mode instead. (Problem introduced in 1196.x) ============================================================================ A-Shell Development Notes Version 5.1.1196.6 (28 Nov 2010) ============================================================================ 1. --- VUE bug fix (edit 303): moving the cursor past lines which exceeded 2022 bytes was causing VUE to crash. 2. --- VUE enhancement (edit 304): The old line length limit of 2022 bytes has been greatly expanded. For existing files, the new limit is 1000 bytes longer than the longest of the first 100 lines in the file. For new files, the limit is 4K. Also, the line concatenation function (^O) now beeps and otherwise does nothing when the concatenated line would exceed the current limit. (Previously it just truncated without warning.) 3. --- VUE enhancement (edit 305): A new variation of the >FORMAT command allows reformatting (wrapping) one line at a time to a specified width: >FORMAT # (where # is the desired wrap width). Unlike the standard FORMAT command, which reformats a paragraph using word wrap so that each line is as long as possible without exceeding the current width specified by the WIDTH command, FORMAT # operates on only the current line, wrapping it at exactly the specified width. This is mostly just a convenience for getting an overview of an extremely long line (as an alternative to successively using the >MARGIN # command, or right arrow, to view one screen width at a time). 4. --- ASHLOG (log file) bug fix: Eliminate the main cause for the log file appearing in the %TEMP% directory rather than the %MIAME% directory (or the directory specified by the LOGDIR= command in the MIAME.INI). This was occurring when the %MIAME% directory contained a space. 5. --- COMPIL (edit 473) bug fix: Using a ++extern'd variable for an array subscript within a procedure was generating a bogus unmapped variable error. Problem was introduced in compiler edit 466 or 467. =========================================================================== A-Shell Development Notes Version 5.1.1196.5 (24 Nov 2010) ============================================================================ 1. --- ATE / ATSD bug fix: specifying any of the login parameters (name, password, and/or additional text) was causing ATE to lock up during connection to an ATSD server. Now you may specify arbitrary text commands, either in the name and password fields, or, preferably, just using the additional text field and leaving the name & password fields blank. 2. --- XTREE refinement: When saving/restoring both the font scale (XTUCFG_FONT) and the column widths (XTUCFG_COLWID), the saved column widths were being overridden by column optimization after the saved font size was applied. Now the column widths are preserved when the tree is recreated. But, any subsequent user adjustment to the font scale (using Ctrl +/- or the $SCALE+, $SCALE- or $RESETSCALE PopupMenu options) will re-optimize the columns. (So if you want to adjust both the scale and the column widths, first adjust the scale, then the columns widths.) 3. --- XTREE bug fix: Calling XTREE or PCKLST without using XTF_COLDFX was crashing A-Shell (problem introduced in 1196). ------------- Note: 1196.1 thru 1196.4 were unofficial test versions so do not have any formal notes. ------------- ============================================================================ A-Shell Development Notes Version 5.1.1196.0 (12 Nov 2010) ============================================================================ 1. --- AUI_CONTROL / ATE performance enhancement: A new AUI_ENVIRONMENT flag, (AGF_NOSTATUS = &h02000) may be set to disable the return of cstatus information from AUI_CONTROL CTLOP_ADD operations. This may be useful in programs which contain many individual AUI_CONTROL calls but where you don't care about the return status (and don't need to reference the control IDs, or are using alphanumeric IDs). This is equivalent to specifying NUL_CSTATUS (or "") for the cstatus parameter in each call, so it is mainly useful when you have a lot of code doesn't take that refinement into account (perhaps because it was originally written for a local Windows environment where there is no performance penalty for returning the status). Use XCALL AUI, AUI_ENVIRONMENT with opcode 1 to set this flag. It remains set for the duration of the session, or until specifically reset. Note that this is purely a server-side enhancement. 2. --- Performance refinement for TAB controls containing XTREE and XTEXT controls: This is primarily an ATE refinement, but could also apply to local Windows environments where you have large XTREE or XTEXT controls within TABs. The idea is to avoid deleting and recreating the XTREE or XTEXT control when switching from one TAB pane to another, by just hiding the XTREE/XTEXT control and later reactivating it rather than recreating it. Normally, the procedure for switching between TABs is to use CTLOP_CLR with the TAB's control ID to clear all of the controls on the pane before switching to the new pane and recreating all the controls for that pane. Destroying and recreating controls is usually just as fast as hiding/restoring them. But in the case of very large and complex controls, like XTREE and XTEXT, and especially in the ATE environment (where a lot of data must be sent from the server to the client to create and load the control), it would be more efficient to just make those controls disappear when switching to another pane, and then make them reappear when switching back to the pane containing them. To accomplish that, you may now specify the code "!XT" (meant to suggest no XTREE or XTEXT) in the Txt parameter of the CTLOP_CLR call, e.g.: xcall AUI, AUI_CONTROL, CTLOP_CLR, TABID, "!XT" This causes any XTREE or XTEXT controls on the current TAB pane to be merely hidden instead of deleted. Later, when you switch back to the pane containing the XTREE or XTEXT control(s), you just need to use CTLOP_CHG with the MBST_ENABLE and MBST_SHOW cstate flags to redisplay the control, rather than recreating it. As a practical matter, to do this robustly, you will need the ctlid of the XTREE and/or XTEXT controls, which you would have from the xtr'ctlid and/or txc'ctlid parameters of the respecting routines. (This assumes you are saving the xtrctl and/or txtctl parameter blocks for each XTREE/XTEXT control separately.) If the ctlid parameter is non-zero, that implies that you must have previously created the control, and thus you may be able to just redisplay it with CTLOP_CHG. The returned cstatus value from the CTLOP_CHG operation will be >=0 if it succeeds, else it failed and you'll need to recreate the control. For example: if XTR'CTLID > 0 then xcall AUI, AUI_CONTROL, CTLOP_CHG, XTR'CTLID, NUL_CTEXT$, & MBST_ENABLE+MBST_SHOW, NUL_CMD$, NUL_FUNC$, CSTATUS else CSTATUS = -1 endif if CSTATUS < 0 then ! we failed to redisplay the XTREE so recreate it ... endif Note: this is a client-side enhancement. (If an app tries to use the feature in an older client that doesn't support it, the CSTATUS parameter will indicate an error and you'll be able to recreate the control as before.) 3. --- XTREE bug fix: The row and header fonts were sometimes getting mixed up when manipulating the font scaling and/or replacing trees. 4. --- XTREE enhancement: A new optional parameter, xinfo, may be specified to allow XTREE to return additional information: xcall XTREE, srow, scol, answer, array, cnt, coldef, exitcode, erow, & ecol, flags, file, mmoclr, xtrctl, filidx, xinfo xinfo must be mapped as a string (fixed or dynamic). Note that if not using filidx, you may specify "" as a placeholder for it. Currently, the only information returned in xinfo is a list of multiple exitcodes that apply to the tree just exited (primarily useful in trees where a single event might logically be associated with more than one exitcode). The format is as follows: 0,exitcode1,exitcode2,exitcode3,...,exitcodeN e.g. 0,-48,-902 The first byte ("0" in the above case) indicates the format of the remainder of the string. So in order to allow programs to avoid confusion when the format of this string gets updated in the future, it should do something like this: if xinfo[1,1] = "0" then else endif To give an example of where multiple exitcodes might be handy, consider the case of an editable tree that also contains PopupMenu exitcodes. While editing a cell, the user may decide to right-click to see the popup menu, and then select one of the options that generates an exitcode. In this case, you may effectively have two exitcodes: one for cell validation (-48) and one for the PopupMenu selection. In this case, the validation exitcode would probably take precedence as the one returned in the main exitcode parameter. Previously, the other events would have gone without notice. Now, if the xinfo parameter is specified, the other exiticode(s) will be passed back in it, allowing the application to respond appropriately to the multiple events. 5. --- XTREE refinement for handling clicks on inactive trees: When the user clicks on an inactive XTREE, it creates potential complications for the application. Typically, the xtr'kbdstr parameter of the inactive xtree will be used to generate an exitcode indicating which control was clicked, and the control currently with the focus will exit with that exitcode. The application would then typically call XTREE for the clicked-on tree. The complications arise when the click event has (or should have) more consequences than simply putting the focus on that XTREE. For example, if the target tree uses SelChgExit or ClickExit, the click event might logically need to trigger one or both of those exitcodes. In the case of a right-click, if there was a context menu defined, the user would expect it to appear (in addition to the tree getting the focus). The act of clicking on the inactive tree might also have ramifications for the control that previously had the focus, perhaps INFLD or even another XTREE. For example, in either of those cases, exit validation may be needed, which could potentially put the application the position of having to ignore the original click on the inactive tree, in order to enforce some data entry rules in the previously active tree or field. The general procedure for dealing with these complications is (and has been) as follows: a. The click on the inactive tree generates the exitcode associated with the xtr'kbdstr field for that tree. b. The currently active control (presumably being handled by an XCALL) exits with that exitcode. c. The application performs any exit validation or cleanup necessary for the field/control just exited. d. Assuming no problems so far, it then calls XTREE (probably with XTROP_RESELECT) to activate the tree just clicked on. e. Once activated, that tree should try to proceed with processing the secondary events associated with the click that occurred when the tree was inactive. For example, if it was a right-click on a column that had a PopupMenu, it should then display the context menu. Or if the click caused the selection to be moved to another row and SelChgExit was defined, then the tree should exit with the exitcode defined for the SelChgExit. If the inactive click was on a checkbox cell, the contents of the checkbox should now be toggled, and if validating, the tree should exit with exitcode -48. Etc. The refinement here is not so much a change of procedure but a review and slight cleanup to reaffirm that it actually works as just described. In addition, in the case where the inactive click could lead to multiple exitcodes, those would now be returned in the xinfo parameter (if specified). Finally, there is one new feature associated with this "refinement": A new flag, XTF2_CLRDEFER (&h0100) may be passed to tell XTREE to ignore any previous inactive click and to clear any secondary events associated with it. This would be useful in the case where the operation interrupted by the click on the inactive XTREE wasn't properly completed, causing the application to effectively ignore the inactive XTREE click. But at some point later, the application may decide to call that XTREE for other reasons, and we wouldn't want to then have to deal with the deferred effects of the original click event. Currently, inactive click events are discarded after about 2 seconds, but that is not necessarily an appropriate time period. The new flag allows for somewhat more application control. ============================================================================ A-Shell Development Notes Version 5.1.1195.0 (09 Nov 2010) ============================================================================ 1. --- COMPIL (edit 471) enhancement: 4 new shortcut operators defined: var += ! equivalent to var = var + () var -= ! equivalent to var = var - () var *= ! equivalent to var = var * () var /= ! equivalent to var = var / () These require /X:2 or /RC, but they do not have any compatibility effect on the resulting RUN module. ============================================================================ A-Shell Development Notes Version 5.1.1194.4 (05 Nov 2010) ============================================================================ 1. --- MX_WINSETTINGS refinement: Opcode 1 (set value) is now much faster (under ATE) due to the elimination of the need to wait for a response from the ATE client. 2. --- MX_WINSETTINGS / AW_WINSETTINGS refinement: Opcode 0 (get value) with id 0 now returns a comma-delimited string of all the available values. (This is much faster than retrieving each value one at a time over ATE, where there could be a several ms latency for each command/response turnaround.) Note that the comma-delimited string will have a place for each setting by ID value, from 1 to the maximum ID (currently 21). 3. --- AG_XFUNCS bug fix: SBX routines that were themselves invoking AG_xxx functions (either directly or indirectly via MX_xxx functions) were sometimes causing ATE to hang due to a conflict in handling the nesting of commands. This should be fixed now. 4. --- XTREE bug fix: A recent fix had the side effect of breaking certain XTREE exitcodes. ============================================================================ A-Shell Development Notes Version 5.1.1194.3 (04 Nov 2010) ============================================================================ 1. --- COMIO bug fix: Inputting (opcode 8) up to a specific terminating character (e.g. COUNT=-1 to input up to a CR) was having the side effect of removing all the remaining characters from the input buffer. (This was introduced in one of the recent updates.) Also, opcode 16 (write) now returns (in COUNT) the number of characters actually sent, per the documentation. ============================================================================ A-Shell Development Notes Version 5.1.1194.2 (03 Nov 2010) ============================================================================ 1. --- ATE command bug fix: Some commands with very large responses (over 2K), such as a request to retrieve clipboard data (using MX_CLIPBOARD) were leading to a buffer overflow and A-Shell crash. Note that for ATE/ATSD, the update may be required on both sides in order to close the loophole. 2. --- ATE/A-Shell Windows input buffering refinement: There was effectively a limit of 3K on the amount of input data that could be buffered by ATE before it was processed. This was interfering with some commands (both ATE when the server is Windows, and in local A-Shell/Windows) that may have needed to return more than 3K at a time. (Retrieving clipboard data with MX_CLIPBOARD was an example.) The relevant buffers are now auto-expanded. 3. --- ATE command timeout refinement: the timeout on ATE commands now auto-extends itself if data is still being transferred. This resolves a problem with premature timeout when the data is taking longer than expected to be transferred from the client, but it is still coming. ============================================================================ A-Shell Development Notes Version 5.1.1194.1 (03 Nov 2010) ============================================================================ 1. --- COMIO.SBR bug fix: Recent changes (see 1193 below) introduced a bug in which opcode 4 (check for data) was waiting indefinitely (if no data was available) when the timeout was set to 0. This makes sense for the read and write operations, but not for the check operation. It now behaves as expected. ============================================================================ A-Shell Development Notes Version 5.1.1194.0 (02 Nov 2010) ============================================================================ 1. --- XTREE enhancement: The meaning of the XTR'USRCFG flag value 2 (previously named XTUCFG_SRTORD) has been change to separate xtr'columnactive from the xtr'sortorder() and xtr'columnsort() information. This flag value (2) has been renamed (in xtree.def) to XTUCFG_COLSRT and now saves and restores only the xtr'sortorder() and xtr'columnsort() values. A new flag, XTUCFG_COLACT (value = &h0010) has been defined to save and restore the active column. To minimize the effect on existing programs, the old symbol, XTUCFG_SRTORD, has been redefined to &h0012, combining the two flag bits so as to preserve the old behavior. (So as long as you recompile your programs prior to installing this update, there will be no change at all.) If you don't recompile, any XTREEs using the XTUCFG_SRTORD flag will no longer save and restore the user's active column. (But this effect is probably too subtle for most people to even notice.) See the updated XTREE.DEF (edit 125) for the updated symbol definitions. ============================================================================ A-Shell Development Notes Version 5.1.1193.4 (02 Nov 2010) ============================================================================ 1. --- XTREE bug fix / refinement: Reorganize the code that determines the exitcode when there are multiple possibilities, to avoid conflicts caused by interaction between multiple XTREE controls. This was leading to unexpected exitcodes (like -48) when clicking on one tree while another one was active. ============================================================================ A-Shell Development Notes Version 5.1.1193.3 (01 Nov 2010) ============================================================================ 1. --- XTREE enhancement: when a call using XTF_NOSEL follows a click on the inactive tree, it now returns the location of the click in the XTR'TARGETROW and XTR'TARGETCOL fields. This is useful in the following scenario: Your program is waiting in some state other than XTREE (perhaps INFLD), but there is a visible (inactive) XTREE control on the screen. The user clicks on a cell in the XTREE. This returns the exitcode defined by XTR'KBDSTR to whatever routine is waiting on input. Your program sees that the exitcode is from clicking on the inactive XTREE, but you want to know what cell was clicked. So you call the XTREE, with opcode XTROP_RESELECT and with the XTF_NOSEL flag set (for an immediate exit). On exit, your program can get the location of the click from XTR'TARGETROW/XTR'TARGETCOL. ============================================================================ A-Shell Development Notes Version 5.1.1193.2 (01 Nov 2010) ============================================================================ 1. --- XTREE bug fix: Using XTROP_DELSEL with a tree containing editable cells was often scrambling the editable cell data in rows following the last row marked as deleted. ============================================================================ A-Shell Development Notes Version 5.1.1193.1 (31 Oct 2010) ============================================================================ 1. --- MAXLOCKS bug fix: The MIAME.INI statement MAXLOCKS=### was effectively being ignored, making it impossible to increase the default number of simultaneous locks (100). =========================================================================== A-Shell Development Notes Version 5.1.1193.0 (28 Oct 2010) ============================================================================ 1. --- Compiler (edit 467) / Runtime refinement: STATIC DIMX statements were not acting like other STATIC MAP statements in only executing once. Instead you had to use another static variable to maintain a flag, or some other mechanism, to avoid trying to execute the statement a second time (which would have caused a Basic error). 2. --- Compiler enhancement (edit 468): It is now possible to use the sizeof(var) compiler function to reference the size of the immediately preceding var even when it is a structure. Previously, this generated a "variable size not yet finalized" compile error, requiring the insertion of a variable in between the preceding var and the one using the sizeof(var) expression. 3. --- Compiler enhancement (edit 469): Local non-static DIMX statements are now fully cleaned up on exit from the function or procedure. Previously, the variable descriptor was removed (along with all of the other local stack variables), but the memory handle and allocation remained in effect. With this enhancement, it is no longer necessary to use REDIMX(0...) to "undimx" any DIMX'd arrays at the end of the function. (But it doesn't hurt to perform that step redundantly.) Note that this is purely a compiler adjustement not a runtime fix. 4. --- W2000 compatibility has been restored. (It was lost when we switched to the VS2010 compiler, a few versions back.) 5. --- (Windows/ATE) TAB(-1,49) (solid block), TAB(-1,50) (slant-hashed block), and TAB(-1,51) (crosshatch block) were not displaying properly except with the MIAME Terminal font. 6. --- COMIO.SBR fixes/refinements: - The timeout feature was not working at all in the read mode except when waiting on a specific terminating character. The timeout value was also being switched to approximately 6 seconds in many cases, despite the value passed. - The timeout feature now works in opcode 4 (check for characters), as well as in all variations of opcode 8 (input). - Internal timer intervals within the send and receive routines were reduced from 1 second to 1/10 second, reducing the latency of send and receive operations. ============================================================================ A-Shell Development Notes Version 5.1.1192.6 (20 Oct 2010) ============================================================================ 1. --- (Linux) Workaround an apparent bug in the memory copy (memcpy) library routine in one Ubuntu installation, which had the effect of corrupting some string concatenation operations. (The character at the start or end of one of the operands would sometimes be replicated into the adjacent byte, in maybe 5% of the cases, presumably based on some kind of alignment factors.) The workaround substitutes a different memory copy routine (memmove), which is slightly less optimized in order to handle overlapping regions (which shouldn't have been a factor in this case, but apparently the decreased optimization eliminated the problem). There is a slight performance penalty associated with this change (string intensive operations appear to be about 2% slower), but at least for now, that seems like an acceptable trade-off to avoid a potentially devastating data corruption bug that, although rare, we otherwise seem to have no easy way of detecting or preventing. 2. --- (Windows ATSD) MSGBOX.SBR bug fix: The text mode version of the message box (used when connecting to ATSD from a non-ATE emulator) was not displaying the proper message text. ============================================================================ A-Shell Development Notes Version 5.1.1192.4 (24 Sep 2010) ============================================================================ 1. --- A-Shell/Windows/ATE packaging fix: APEX got broken in 5.1.1192 due to a licensing mixup created when moving the development to Visual Studio 2010 from VS 2008. It is now fixed. WARNING: At the same time, backwards compatibility with W2000 was lost. (Ashw32.exe reports "not a valid WIN32 application".) This problem is still under study. ============================================================================ A-Shell Development Notes Version 5.1.1192.3 (23 Sep 2010) ============================================================================ 1. --- ATSD / XTEXT (server side) bug fix: The text was not being returned when using buffer mode (txc'dstfmt = 0). ============================================================================ A-Shell Development Notes Version 5.1.1192.2 (23 Sep 2010) ============================================================================ 1. --- AUI_CONTROL refinement: When creating a modal dialog, if the application is currently in background, it now takes additional steps to remain in background. Previously, the act of creating a dialog while in background was likely to cause a shuffling of the window order, often ending up with the dialog's parent window displaying on top of both the new dialog and the currently active window. 2. --- New AG command AG_ISFOREGROUND (78) to test whether the current instance of A-Shell (or the ATE client) has foreground status (i.e. is the active app): ? tab(-10,AG_ISFOREGROUND);chr(127); input "",FG Returns 1 if in foreground, else 0. Note that as a practical matter (to eliminate the need for an INPUT statement), you'll probably want to call this via the MX_AGWRAPPER command: MAP1 IS'FG,B,1 xcall MIAMEX, MX_AGWRAPPER, AG_ISFOREGROUND, "", IS'FG ============================================================================ A-Shell Development Notes Version 5.1.1192.1 (22 Sep 2010) ============================================================================ 1. --- Compiler bug fix (edit 467): STATIC DIMX now works as expected within a function or procedure. Previously, it ignored the STATIC. But due to a quirk which was removed in 1190 when the DIMX issues with SBX recursion were resolved, it acted as if static at runtime. Between 1190 and 1192, even STATIC DIMX acted like DIMX. Now they both act as expected. (Note that you are still responsible for cleaning up unwanted DIMX allocations made within a function.) 2. --- Dynamic memory bug fix: close a loophole causing a bogus out of memory error when a memory pool had to be moved in the middle of a deeply nested function specified within an assignment statement whose destination variable was also a dynamic variable sharing the same (deeply nested) memory pool. 3. --- Runtime enhancement to array AUTO_EXTEND feature: References to elements of DIMX/AUTO_EXTEND arrays within XCALL, FUNCTION, PROCEDURE calling parameter lists, as well as in INPUT statements, now trigger auto-extension of the array if required. Previously, auto-extension only occurred when the array element was referenced on the left side of an assignment. The new behavior is useful in cases where the parameter will be updatd by the routine being called (thus making the operation similar to an assignment). ============================================================================ A-Shell Development Notes Version 5.1.1192.0 (21 Sep 2010) ============================================================================ 1. --- COMPILER enhancement (edit 462): Functions and procedures may now contain a special label "$EXIT:" which the EXITPROCEDURE and EXITFUNCTION statements will effectively jump to. This allows you to insert code into the function/procedure that will always be executed at the end of the routine, even if the routine is terminated with the EXITPROCEDURE or EXITFUNCTION statement. For example: PROCEDURE TEST() DIMX A(100),S,50 ... IF =N) PRINT .EXTENT(ARY(),2) ! extend of 2nd dimension (5) PRINT .EXTENT(ARY(),3) ! extend of 3rd dimension (25) PRINT .EXTENT(ARY(),4) ! extend of 4th dimension (-1 for error) The above program will output predictable values - 5 and 25 for the extent of the 2nd and 3rd dimensions, since those are fixed in the array definition. But the extent of the first dimension will depend on the AUTO_EXTEND activity. For example, if N = 75, the returned value might be 85 (since when arrays are auto-extended, they are extended somewhat beyond the minimum size needed at the time, in order to minimize the need for subsequent auto-extensions). For an invalid dimension (4 in the example above), or for an array that has not yet been DIMXed (or has been un-dimensioned), the return value is -1. (This last fact eliminates the need to maintain a static flag variable indicating whether a particular dynamic array has been DIMX'd yet, as was sometimes necessary previously.) 4. --- COMPILER (edit 465) and corresponding RUNTIME enhancement: Support a new "dynamic overlay" mechanism. This is similar to the standard static overlay mechanism supported since "the beginning", except that the overlay is activated at runtime. Its primary initial use to be able to overlay a dynamic array with an X variable so that it can be passed as a parameter to subroutines. Eventually it might also be incorporated into a "pass by reference" capability. There are two steps involved in creating a dynamic overlay: - Declare the overlay variable using the special ,@0 overlay syntax, e.g.: MAP1 OVERLAY,X,@0 Note that the size field is optional but ignored, and only S and X variables are allowed. (In most cases, only X makes sense; use S-type overlays only when you are sure that the target variable contains no embedded null bytes.) - Assign the overlay at runtime using the "=@" operator, e.g.: OVERLAY =@ VAR ! or, OVERLAY = @VAR (spaces are not significant) This effectively gives the OVERLAY variable the same data storage location and size as the VAR variable. AS mentioned above, the main motivation is to do this with dynamic arrays, e.g.: DIMX DYNARY(x,y,z),S,n ... OVERLAY =@ DYNARY() Note that you may NOT specify any array subscripts for the array on the right side of the @= operator, since this technique is currently only supported to overlay the ENTIRE array. There is currently no corresponding operation to overlay a dynamic array on top of an X variable (which admittedly might be handy when passing such an array between routines via parameter lists). But you can get around that limitation using the technique in the following example, which passes a dynamic array to a procedure for processing: DIMX ARY(X),S,Y MAP1 OVL,X,@0 ... ... OVL = @ARY() ! overlay the array with the XARY variable CALL MYPROC(OVL,X,Y) ! pass array plus its dimensions to a function ... ! (our ARY() may have been updated by the MYPROC() procedure) END !----------------- PROCEDURE MYPROC(XXARY AS X0, ELEMENTS AS F, WIDTH AS F) DIMX LOCARY(ELEMENTS),S,WIDTH ! alloc local array to match array passed in MAP1 LOCOVL,X,@0 MAP1 I,F LOCOVL =@ LOCARY() ! overlay the local (currently empty) array LOCOVL = XXARY ! now copy the data on top of that FOR I = 1 TO ELEMENTS NEXT I XPUTARG 1,LOCOVL ! update caller's overlay (which is the same as ! caller's actual array) with the local array data ENDPROCEDURE 5. --- SQL.SBR parameter passing adjustment: A change has been made in the way that F4 parameters are passed, allowing them to be used in prepared statements. *** WARNING: this change breaks the prior ability to fetch a field directly into an F4 variable (using SQLOP_FETCH_ROW) using the 1.3 connectors. So if you use that capability, you must upgrade to the 1.4 connectors at the same time that you update to A-Shell 5.1.1192.0 *** 6. --- AUI_CONTROL enhancement: Support the new "Command Link" button style (introduced in Vista). Command Link buttons are typically rather large and contain three sub-components: - Main Text: a short text string comparable to the normal button text. - Secondary Text: a longer text string with additional explanation of what the button does. This string appears in a smaller font beneath the Main Text. - An icon: either the default green arrow pointing to the right, or a custom icon you specify. The icon appears at the left side of the button. See http://msdn.microsoft.com/en-us/library/aa511455.aspx for examples and usage guidelines provided by Microsoft. Command Link buttons are distinguished from regular buttons in AUI_CONTROL purely by the syntax of the ctext parameter, which must be as follows: ctext = maintext$ + "|" + secondarytext$ + "~" {+ iconspec$} The iconspec$ can be a .bmp file, a .ico file (with the standard search path, which includes the %MIAME%\icons directory), or an iconname::dllname spec. It may also be omitted (to use the default icon), but the tilde must then be the last character in the ctext string. Do not specify the MBF_ICON or MBF_BITMAP flags. The icon or bitmap will be displayed at the larger of 16x16, 32x32 or 48x48, depending on how tall the button is. If the Command Link button style is not supported by the version of Windows (i.e. prior to Vista), then the iconspec will be ignored, and the "|" will be converted to a chr(13) and the MBF_WRAP flag turned on, so as to display the secondarytext$ below the maintext$. (So the button will still appear at least functional, if not beautiful.) See the sample program CMDLINK.BP in [908,51] of the SOSLIB for an example. 7. --- AUI_CONTROL enhancement: Starting with Windows Vista and above, you can now add an icon or bitmap to any button. The concept is similar to the Command Link button just described, except without the secondary text (and thus may be suitable for more "normal" sized buttons.) As with Command Link buttons, they are requested purely by means of the syntax of the ctext parameter contents, which must be: ctext = text$ + "~" + iconspec$ The syntax options for iconspec$ are the same as for Command Link buttons. If the version of Windows does not support the feature, the iconspec$ will just be ignored. Note that as with the Command Link buttons, the image displays on the left of the text. But here the image is allocated the entire left half of the button, while the text gets the right half. And the right side of the image will be adjacent to the left edge of the text. If you prefer some spacing between them, add space(s) to both ends of the text$ string. (The leading space provides the separate with from the image, but the trailing space will help maintain centering of the text within the button if the image option is not supported.) See the sample program IMGTXTBTN.BP in [908,51] of the SOSLIB for an example. ============================================================================ A-Shell Development Notes Version 5.1.1191.6 (14 Sep 2010) ============================================================================ 1. --- XDATE.SBR bug fix: An input date missing the first field (e.g. '/12/10') was resulting in a bogus return date. Now it is flagged as invalid. 2. --- Top status line bug fix for TAB(-1,63) - problem intoduced in 1191.3 was causing messages intended to start in column 1 of the status line to appear at the current cursor location instead. 3. --- EVENTWAIT bug fix: TABbing from control to control wasn't working properly (broken somewhere after 1191.0). ============================================================================ A-Shell Development Notes Version 5.1.1191.5 (09 Sep 2010) ============================================================================ 1. --- INFLD bug fix: rubout in auto-complete mode was not exiting for refresh of the list data if the field contents matched the first item in the list. 2. --- ATE function key handling bug fix: use of function keys (and GUI objects with VK_F# clickstrings) was in some cases not resulting in the expected (exitcode) result. One example: INFLD with auto-complete list data showing. Note: problem did not affect clickable objects which used the "extended function key coding", i.e. "VK_xF###" ============================================================================ A-Shell Development Notes Version 5.1.1191.4 (01 Sep 2010) ============================================================================ 1. --- MX_FINDNEXT refinement: test for common mistake of including the first argument from the MX_FINDFIRST call. 2. --- SORTIT refinement: minor improvement in the parameter error reporting. ============================================================================ A-Shell Development Notes Version 5.1.1191.3 (31 Aug 2010) ============================================================================ 1. --- ISMUTL.LIT 1.3(134) now allows 0 as the record size, needed for "pure" indexes. Previously, such an index could only be created via ALLOCATE'INDEXED. 2. --- ISAM-A bug fix/enhancement: "Pure" indexes (see 5.1.1121) were not supporting the GET'LOCKED statement, which made it difficult to use UPDATE'RECORD or DELETE'RECORD to update index entries. See the sample program PURIDX.BP in the SOSLIB [908,33] account for an example. 3. --- APEX bug fix: If the native print file path (including the APEX directory) contained a "-", the printfile name got truncated there. (This wasn't critical, except when it occured in a directory name.) 4. --- XTREE XTF2_CSV fix/refinement: XTF2_CSV mode now supports XTF_COLDFX case where only pseudo-columns are defined (i.e. for colors, fonts, etc) in the COLDEF string. If no real columns are defined in the COLDEF, it then reverts to automatic column definition mode (getting the column info from the next line of the CSV), as if XTF_COLDFX had not been set (i.e. as if no COLDEF was used at all). This is now consistent with the existing documentation. 5. --- XTREE refinement: Clicking out of cell editing by clicking on a editable cell of another tree was previously sometimes requiring multiple clicks before it would enter cell editing mode in the target tree. ============================================================================ A-Shell Development Notes Version 5.1.1191.2 (25-Aug 2010) ============================================================================ 1. --- AUI_CONTROL bug fix: CTLOP_INFO wasn't returning the dllname for icon buttons (e.g. resname::dllname); introduced in 1190.5. 2. --- Array handling runtime bug fix: Any access to an unmapped array was generating a subscript out of range or out of memory error. Problem introduced in 1190.0. 3. --- Compiler bug fix (AIX only): A bad link module was resulting in segmentation fault errors during compilation. (New compiler edit: 461) ============================================================================ A-Shell Development Notes Version 5.1.1191.1 (24-Aug 2010) ============================================================================ 1. --- XTREE bug fix: cursor was being left in hourglass mode on display only trees. 2. --- XTREE refinement: when exiting from the tree is allowed with up arrow or down arrow, it now requires a minimum of 1/3 second since the last arrow key to allow the exit. (This eliminates the problem of holding down the arrow key to scroll up/down and then finding yourself out of the tree and several fields away due to the up/down arrow exiting and then being interpreted by other controls as next/prev field. 3. --- SBRC.SBR op 1 was returning both P and PN fields set to the P value. ============================================================================ A-Shell Development Notes Version 5.1.1191.0 (20-Aug 2010) ============================================================================ 1. --- New MIAMEX function MX_IATIMEOUT (180) allows querying / setting the inactivity timeout: XCALL MIAMEX, MX_IATIMEOUT, OP, TIMESECS Where: OP [num, in] Specifies whether to get (0) or set (1) the timeout. TIMESECS [num, in/out] Timeout value in seconds. If OP=0, the current timeout setting (or zero if disabled) is returned here. Otherwise the value passed in TIMESECS is used to reconfigure the current inactivity timer. Note that unlike the case in the MIAME.INI IATIMEOUT parameter, which uses units of minutes, this new MX_IATIMEOUT function uses units of seconds. 2. --- Minor refinement in the expansion heuristics used by DIMX with AUTO_EXTEND. When the array needs to be expanded, it is now expanded by a minimum of 150% of the previous array size, or 110% of the size required for the assignment triggering the expansion. But, this is then limited to no more than 128K beyond what would be required for the current assignment. Also, a 128K grace or overage is now added to the MALLOCLIMIT value, to prevent the possibility of the expansion failing because of these heuristics. 3. --- XTREE / ATE server-side bug fix: Close a loophole in the optimizer that was resulting in a failure to load a tree in an obscure multi-tree case where two trees had identical data. ============================================================================ A-Shell Development Notes Version 5.1.1190.5 (19-Aug 2010) ============================================================================ 1. --- Workaround a spurious problem in which buttons containing icons would generate a "ASHBUTTON" window class not found error (and the button wouldn't appear.) ============================================================================ A-Shell Development Notes Version 5.1.1190.4 (18-Aug 2010) ============================================================================ 1. --- XTREE bug fix: Close a timing loophole in which exiting a tree exiting a tree by clicking on another, and then re-entering the first tree, was sometimes resulting in a second (spurious) exit. ============================================================================ A-Shell Development Notes Version 5.1.1190.3 (17-Aug 2010) ============================================================================ 1. --- XTREE bug fix: a change in 1189.1 was interfering with the SelChgExit feature when triggered by a click on an inactive tree. 2. --- XTREE bug fix: the hourglass/wait-cursor was sometimes staying on after loading an XTREE, until you moved the cursor. ============================================================================ A-Shell Development Notes Version 5.1.1190.2 (16-Aug 2010) ============================================================================ 1. --- XTREE bug fix: clicking on a checkbox in an inactive tree was generating a GPF/stack overflow. (Introduced in 1189.1) ============================================================================ A-Shell Development Notes Version 5.1.1190.1 (16-Aug 2010) ============================================================================ 1. --- Bug fix: XCALLs with more than 30 floating point arguments were causing a stack or string overflow error. (Side effect of recent stack checking improvements.) 2. --- INFLD auto-complete refinement: BACKSPACE was deactivating the timer. 3. --- XTEXT (ATE server side) bug fix: Using TXFF_STRING (non-file) mode for the destination was generating a segmentation fault unless the destination variable was dynamic (i.e. S,0). ============================================================================ A-Shell Development Notes Version 5.1.1190.0 (15-Aug 2010) ============================================================================ 1. --- DIMX runtime enhancement: DIMX arrays now support reentrancy (i.e. multiple instances of the same copy of the same module can be running simultaneously.) This is mainly of interest in recursive SBX calls. (Previously, certain aspects of the DIMX variable status were shared between the instances, thus interfering with the ability to use an independent DIMX in each instance.) Note that this change is purely in the runtime system and does not require recompiling. 2. --- "UNDIMX" is now effectively supported. But rather than declare a new reserved word, we use the existing REDIMX, with all of the subscripts set to zero. For example: DIMX ARY(25,30),F ! allocate the array ... REDIMX ARY(0,0) ! deallocate (i.e. UNDIMX) it 3. --- DIMX enhancement (requires compiler 460+): arrays may now be declared as auto-expanding by adding the "AUTO_EXTEND" keyword to the end of the DIMX statement: DIMX ARY(10,30),S,25,AUTO_EXTEND The above allocates the array to the initial size of 10x30, but allows the array to expand (in the first dimension only!) during an assignment, e.g.: ARY(17,20) = "Test expansion" ! this would expand ARY to 17x30 ARY(10,45) = "Bad subscript" ! this fails (2nd dimension too big) Note: In actuality, the first statement above would expand the array to somewhat more than 17x30, to reduce the number of expansions likely when filling out an array to an unknown size. But that should be transparent. You can use the MALLOC trace to monitor the underlying memory allocation and deallocation opeations associated with arrays. Also note: DIMX, REDIMX and auto-expansion operations are all limited by the MALLOCLIMIT setting in the miame.ini (defaults to 8MB). Also note: when an array is created with DIMX, or expanded, whether by REDIMX or by the AUTO_EXTEND mechanism, the new space will all be cleared to nulls. 4. --- DIMX compiler refinement: default F and S sizes are now supported. Eg: DIMX TEST(50),F Previously, this would compile without error but generate a runtime error due to the missing size token. 5. --- XTREE enhancement: ^P now invokes the print/preview routine. 6. --- INFLD Auto-complete bug fix: Certain exitcode 30 exits were leaving the field "active", which lead to some unresponsive behaviors. ============================================================================ A-Shell Development Notes Version 5.1.1189.6 (13-Aug 2010) ============================================================================ 1. --- INFLD bug fix: When display a date using ||C, don't use the dropdown style if the |g (no date editing enhancements) code specified. Also, adjust the width of the displayed date control to fix some instances of truncation. 2. --- INFLD bug fix: Widen the timer display field (from 6 to 8 columns) to eliminate some instances of truncation when using a large font. ============================================================================ A-Shell Development Notes Version 5.1.1189.5 (12-Aug 2010) ============================================================================ 1. --- INFLD bug fix: the caret (editing position market) within combo boxes was sometimes appearing way too large. (Problem introduced in 1189.1) 2. --- INFLD auto-complete refinement: if TYPE 5 or |5 (enable down arrow exit) is specified with ||a (auto-complete), down arrow will now return exitcode 5 if the list box is not yet displayed. (Otherwise it drops directly into the list box.) ============================================================================ A-Shell Development Notes Version 5.1.1189.4 (11-Aug 2010) ============================================================================ 1. --- ATE bug fix: TAB(-10,AG_FTP) from pc-to-host was effectively ignoring the host directory if it was in the form "ersatz:" or "dsk:". (It was working ok without the ":" though.) 2. --- INFLD Auto-Complete bug fix: The ")" (start at end of field) option wasn't working reliably with self-combo (setdef="...") mode. 3. --- INFLD Auto-Complete bug fix: In some cases, the timer wasn't getting reset on exit, leading to unresponsive behavior on re-entry. ============================================================================ A-Shell Development Notes Version 5.1.1189.3 (10-Aug 2010) ============================================================================ 1. --- Compiler bug fix: The 30th ++IF directive during a compilation was causing an internal stack overflow, which was being reported as a syntax error. ============================================================================ A-Shell Development Notes Version 5.1.1189.2 (09-Aug 2010) ============================================================================ 1. --- AUI_MENU bug fix: MNUOP_CHK and MNUOP_STA were not working on popup menu items (i.e. menu items with sub-items). 2. --- AUI_MENU bug fix: MNUOP_STA was not returning system error codes for errors unanticipated by the routine (which is why the bug just mentioned went unnoticed for so long.) 3. --- MX_ERRNOMSG refinement: It is no longer necessary to convert negative system error numbers to positive before calling the routine. (System error codes are all positive, but many SBRs return them as negatives to distinguish errors from other return values, leading many people to forget to use abs() to convert them to positive before using MX_ERRNOMSG.) ============================================================================ A-Shell Development Notes Version 5.1.1189.1 (08-Aug 2010) ============================================================================ 1. --- INFLD Auto-Complete Enhancement: When combined with self-combo mode (where setdef="..."), it starts out as a combo box rather than an edit control. 2. --- INFLD Auto-Complete Bug fixes: Clean up some synchronization issues causing the edit and list controls to stop working properly together. ============================================================================ A-Shell Development Notes Version 5.1.1189.0 (07-Aug 2010) ============================================================================ 1. --- INFLD Auto-Complete Enhancement: It is now possible to use auto-complete with a coded list (||L). In this mode, when returning to the application for more data (exitcode 30 or 31), it returns the raw (descriptive) field contents (rather than the coded translation). On input, if the passed-in contents of the field cannot be translated, they will be displayed as-is. Note that you may would want to use ||s (list matching optional) with ||L, else unless you preload the list with all the valid possibilities, if the user keys in a valid entry and quickly hits ENTER, it will be rejected (until your app has a chance to first update the list based on what was typed.) 2. --- INFLD Auto-Complete refinement: When the auto-complete list is opened, it is now automatically scrolled so that the first (or closest) matching item is visible. (This is mainly a factor if you load the list with data that would sort prior to the item currently in the edit box.) 3. --- INFLD Auto-Complete refinement: fields that are covered over by the auto- complete drop-down list no longer "bleed through" into the list. 4. --- INFLD Auto-Complete refinement: the XTREE (list control) is now given the name "xtrInfldAutoComplete". This can be useful if you decide to not return to the field on one of the Auto-Complete exitcodes (30 and 31), and therefore need to delete the XTREE/list control manually, i.e. xcall INFLD, ... if exitcode = 30 or exitcode = 31 then ! (auto-complete) ! normally we would return to the field after updating the setdef, ! but if we decide not to, we must delete the XTREE control: xcall AUI, AUI_CONTROL, CTLOP_DEL, "xtrInfldAutoComplete" endif 5. --- Compiler (458) bug fix: the stack was overflowing if there were too many ++ifdef statements. 6. --- XTREE imaging refinement: the "increase by" argument to the ImgCount= option is now automatically adjusted upwards according to usage. Previously, if it was set to 1, and the actual number of images was more than the initial count parameter, it would resize one of the image-related buffers for each new image, resulting in a lot of memory trashing. 7. --- A-Shell refinement; Stack overflow testing is now more robust, allowing more stack overflow errors to be trapped before they cause a crash. ============================================================================ A-Shell Development Notes Version 5.1.1188.9 (29 Jul 2010) ============================================================================ 1. --- XTREE bug fix: in some cases you were not allowed to reduce the font scale (with Control "-") before you first increased it. 2. --- XTREE refinement: remove a bottleneck that was causing tree loading operations to take way longer than necessary (eg. 15 seconds vs 1 second). 3. --- VUE enhancement: New command MOUSEPOS {BOOL} may be used at the command level or in the ini.vue to disable caret positioning with the mouse. This may be useful on some laptops with very sensitive touchpads, which otherwise may cause the typing position to jump around unexpectedly (considered rather bad behavior in a program editor). Default is TRUE. ============================================================================ A-Shell Development Notes Version 5.1.1188.7 (29 Jul 2010) ============================================================================ 1. --- INFLD Auto-complete bug fix: now works within modeless dialogs. Previously the drop-down was causing the dialog to temporarily disappear. 2. --- XTREE image bug fix: Further cleanup of handling of descriptive text which shares a cell with an image. ============================================================================ A-Shell Development Notes Version 5.1.1188.7 (28 Jul 2010) ============================================================================ 1. --- XTREE bug fix: Close loophole in which XTREE would temporarily remove other controls even when it was in a dialog. (That should only happen for overlapping controls when XTREE is in the main window.) 2. --- XTREE image bug fix: Image cells whose text ended in a "." were sometimes being display as if a full filespec. ============================================================================ A-Shell Development Notes Version 5.1.1188.6 (23 Jul 2010) ============================================================================ 1. --- XTREE scaling refinement: Non-XTREE fonts can no longer interfere with the font reset operation. (Previously, after fonts scaled beyond about 200%, the reset operation refused to work.) 2. --- (Windows) Ashlog directory fix: the log was appearing in the users %TEMP% directory instead of the %MIAME% directory. 3. --- LOOKUP refinement: LOOKUP now reliably returns 0 for a null filespec. Previously, it was sometimes returning 0, 0.5, or even 1, depending on the version of Windows and some other mysterious factors. ============================================================================ A-Shell Development Notes Version 5.1.1188.5 (22 Jul 2010) ============================================================================ 1. --- $RESETCFG was failing to perform the implied $RESETSCALE operation. ============================================================================ A-Shell Development Notes Version 5.1.1188.4 (21 Jul 2010) ============================================================================ 1. --- XTREE scaling refinement: Changing the scale via the context menu commands $SCALE+, $SCALE- and $RESETSCALE no longer aborts cell editing mode (unless you click outside of the cell being edited, in which case it works like other context menu commands, i.e. as if you had left-clicked outside the cell. ============================================================================ A-Shell Development Notes Version 5.1.1188.3 (21 Jul 2010) ============================================================================ 1. --- XTREE scaling enhancement: New special PopupMenu commands $SCALE+ and $SCALE- now allow adjusting the scale from a context menu. (Also see $RESETSCALE under 1185 below.) 2. --- XTREE scaling enhancement: Control "+" and Control "-" (on the numeric keypad) now work within editable cells. 3. --- New virtual keycode strings defined: VK_^PLUS or VK_^ADD (same as Control "+" on the numeric keypad) VK_^MINUS or VK_^SUB (same as Control "-" on the numeric keypad) VK_^DIV (same as Control "/" on the numeric keypad) ============================================================================ A-Shell Development Notes Version 5.1.1188.2 (20 Jul 2010) ============================================================================ 1. --- XTREE scaling bug fixes: Trees with multiple custom fonts were not getting all of their fonts scaled. Shrinking the font beyond reason was leading to unreasonable results. Line heights were not always matching the height used for editable cells. 2. --- XTREE refinement: the tree was sometimes getting drawn before all of the optimization had been done. ============================================================================ A-Shell Development Notes Version 5.1.1188.1 (20 Jul 2010) ============================================================================ 1. --- XTREE scaling refinements: Further improvements(?) in the scaling performance. ============================================================================ A-Shell Development Notes Version 5.1.1188.0 (19 Jul 2010) ============================================================================ 1. --- XTREE enhancement: Add a configuration option for the XTREE default font. Option appears in the Settings > Fonts menu, and may be retrieved or updated using MX_WINSETTINGS with the new AWS_XTR_FONTFACE (21) option. Changing the XTREE (grid) default font to something specific, like Tahoma, rather than the default (which is typically MS Shell Dlg), may improve the aesthetics and scaling response in XTREE (since the default font doesn't scale very smoothly). 2. --- XTREE scaling refinement: the splitter position is now reset after a font scaling operation if the xtr'leftpanewidth was 0. ============================================================================ A-Shell Development Notes Version 5.1.1187.3 (17 Jul 2010) ============================================================================ 1. --- XTREE font scaling fix: Row height is now adjusted on initial load to avoid truncating scaled fonts, even when XTF_VARY is not set. 2. --- XTREE font scaling fix: Font scaling with Control +/- is now more "natural", eliminating a previous confusion when the incremental scale adjustment didn't actually change the effective size of a particular column font. 3. --- XTREE font scaling enhancement: Column widths are now re-optimized when you adjust the overall scale using Control +/-. ============================================================================ A-Shell Development Notes Version 5.1.1187.2 (15 Jul 2010) ============================================================================ 1. --- XTREE bug fix: Correct problems in 1185 and 1186 which resulted in a different default XTREE font size (generally smaller) then prior to 1185, when the Misc. Settings font scale was other than 0. Also, XTREE default font now matches the A-Shell default GUI font, rather than the Windows default GUI font (the note on 1186.5 was incorrect; this is how it was prior to 1185.) 2. --- EZTYP bug fix: The initial page status (or page status after using the Repaginate command) was showing N/N rather 1/N, which led to progressively worse mismatches between the reported position and the real position. ============================================================================ A-Shell Development Notes Version 5.1.1187.1 (15 Jul 2010) ============================================================================ 1. --- (Windows printing enhancement/fix): The printer init command PRTCOPIES now has an effect on Windows printing. By default, it is TRUE, meaning that A-Shell will generate multiple copies by sending the file multiple times to the printer driver. If explicitly set to FALSE, then A-Shell will tell the printer driver to generate the copies. Previously, if the printer selection dialog was used, then the generation of copies was left to the driver (i.e. PRTCOPIES=FALSE); else it was handled by A-Shell (PRTCOPIES=TRUE). The motivation for the change was a report that a certain printer driver wasn't generating the copies even when told to do so in the printer dialog. This fix should make that problem go away by putting copies (by default) back under control of A-Shell even when the dialog is used. Note the two main downsides to having A-Shell generate copies as opposed to the driver are: - the data has to be sent over the wire to the printer multiple times - you cannot take advantage of the collating option (if the driver offers it) But these are generally of so little import that the increased dependability of having A-Shell generate the copies is a better default choice. 2. --- (AIX) ============================================================================ A-Shell Development Notes Version 5.1.1187.0 (13 Jul 2010) ============================================================================ 1. --- (Windows) New function for sending AG commands between instances of A-Shell/Windows: XCALL MIAMEX, MX_AGINTERPROC (179), HWND, AGCMD, MSG$, STATUS Where: HWND (B4, input) is the target window handle (use MX_FINDWINDOW to get it) AGCMD (num, input) is a value in the range of 1-99 corresponding to the TAB(-10,AG_xxx) commands. (see http://www.microsabio.net/dist/doc/dev/tab10xfunctions.htm ) MSG$ (string, input) is the text string normally following the TAB(-10,AG_xxx) command (must be terminated with chr(127)!!! STATUS (signed numeric, output) returns a status code indicating the success of the operation: 1) OK (target received and processed msg) 0) No response from target -1) target received msg but rejected it as invalid -2) Missing trailing chr(127) on message -3) target HWND not found 2. --- New AG_SENDKBD (82) command to send keyboard characters (literal text, virtual function key sequences, control chararacters using ^ notation). TAB(-10,AG_SENDKBD);text;chr(127); This is mainly useful for sending key clicks to another A-Shell/Windows instance (or from a server to ATE). 3. --- Compiler enhancement (456): reserved words are now allowed for field names within a DEFSTRUCT. For example: DEFSTRUCT ST_TIMEDATE MAP2 TIME,B,4 MAP2 DATE,B,4 ENDSTRUCT Normally TIME and DATE would be disallowed since they are reserved words, but since they get appended to the structure instance name before really being used, there is no conflict here. (Change does not depend on or affect runtime environment.) 4. --- Clean up some issues internal issues with the use of XCALL/VXCALL names longer than 6 characters (see 1186). ============================================================================ A-Shell Development Notes Version 5.1.1186.7 (13 Jul 2010) ============================================================================ 1. --- ATE aux printing bug fix: If the local APEX repository directory contained a dash in its directory name, instead of printing as expected, a error dialog was displayed about failure to open a file with a cryptic filename. (Another workaround would have been to define an APEX environment variable point to a directory whose name did not contain a dash.) ============================================================================ A-Shell Development Notes Version 5.1.1186.6 (12 Jul 2010) ============================================================================ [Note: .4 and .5 were used up internally in beta testing the MX_AGINTERPROC feature to be released in 1187] 1. --- (UNIX) EZTYP bug fix: Pagination with files using LF line terminators was off by one byte, which caused page-range printing from EZTYP to be off as well. (The first page of the range was being output as a blank page.) ============================================================================ A-Shell Development Notes Version 5.1.1186.3 (01 Jul 2010) ============================================================================ 1. --- INFLD bug fix: The current value for a combo box field was not being selected if there wasn't a full-field match. (Problem introduced in 1185.1) ============================================================================ A-Shell Development Notes Version 5.1.1186.2 (30 Jun 2010) ============================================================================ 1. --- XTREE bug fix: Expansion of "%p" in TreeID was being truncated at 6 chars. ============================================================================ A-Shell Development Notes Version 5.1.1186.1 (27 Jun 2010) ============================================================================ 1. --- XTREE bug fix: "%p" in TreeID= was being expanded to % rather than just . 2. --- XTREE enhancement: Control+Shift+"/" now acts like $RESETCFG. 3. --- XTREE enhancement: sorting a column by clicking on the header now cycles between ascending, descending, and original (physical array) order. ============================================================================ A-Shell Development Notes Version 5.1.1186.0 (25 Jun 2010) ============================================================================ 1. --- VXCALL enhancement: Names up to 10 characters are now supported. (Previously, while the compiler didn't/couldn't complain, the runtime system looked at only the first 6 characters.) Note that the 10 character limit is not related to the RUN format but to the existing 10.3 framework for files loaded into USRMEM and which benefit from the emulation of the AMOS-style filesystem. When those get expanded, the VXCALL name limit will expand with them. 2. --- Compiler enhancement (edit 455): XCALL names may now be up to 10 characters long. This is accomplished by automatically converting XCALL statements with names between 7 and 10 characters long to VXCALL statements. This feature requires /X:2 and is not supported by /RC. Note the potential for a backwards compatibility problem if you start using longer names in your XCALL (or VXCALL) statements and then try to RUN the resulting RUN files on an earlier version of A-Shell, which will only be looking at the first 6 characters. (Presumably that would cause an SBX not found error, unless there happened to be an existing routine that matched the first six characters.) For this reason, you when using 7-10 character SBX names, you should avoid picking names for which an existing SBX would match the first six characters. 3. --- INFLD bug fix: When re-entering an ||L (list match) field, previously it was only considering the first 8 characters of the actual field value (after translating via the SETDEF list) when selecting the default item in the list. Thus, in a list like "~T~Materials and Components~M~Materials~C~Components~~", while "M" would internally match to the second choice (Materials), the combo box selection logic was matching "Materials" to the first item in the dropdown list ("Materials and Components"). This has now been resolved by replacing the faulty "select matching item" code within the Windows combobox routine. 4. --- XTREE font scaling enhancement (see 1185 below): Control "/" may now be used as a keyboard shortcut to reset the fonts back to the original scale factor. (Equivalent to the $RESETSCALE PopupMenu command, but doesn't require the creation of a PopupMenu.) Note that depending on the keyboard, there may be more than one "/" key, but only the one associated with the numeric pad may work for this function. 5. --- XTREE font scaling refinement: Fix a compatibility issue introduced in 1185 in which the default XTREE font changed from the default Windows font (MS Shell Dlg) to the default A-Shell GUI font. This was only an issue if the default A-Shell GUI font had been changed from its default, but if so, resulted in existing XTREEs looking different that before 1185, due to the font change. ============================================================================ A-Shell Development Notes Version 5.1.1185.0 (24 Jun 2010) ============================================================================ 1. --- XTREE enhancement: Control "+" and Control "-" (or Control+Mousewheel) now scale all the fonts in the current tree up or down by about 7%. Compatibility note: the previous function assigned to those keystrokes (expand all / collapse all) now requires Control+Shift. This scale adjustment is applied on top of any other font scaling factors associated with columns, rows, or cells. To allow easy reset back to the original scale, a new PopupMenu command $RESETSCALE has been defined. (Also, the existing $RESETCFG will reset the scale as well as the column configuration.) 2. --- XTREE enhancement: the new font scale adjustment factor may be saved and restored (along with the column configuration, etc.) by adding the flag XTUCFG_FONT (8) to the XTR'USRCFG field. 3. --- XTREE enhancement: New advanced coldef parameter DefaultFont= may be used to set the default font for the entire tree. The syntax is the same as for Font=. 4. --- XTREE enhancement: Adjustments to the column layout made to an inactive tree are now saved (provided the tree was originally display with a defined TreeID.) 5. --- Icon DLL enhancement: these DLLs will now be located in the %ATEPERMCACHE% directory if not found in the normal search path. ============================================================================ A-Shell Development Notes Version 5.1.1184.7 (22 Jun 2010) ============================================================================ 1. --- INPUT bug fix: trailing blanks were being stripped when they shouldn't be, and quotes weren't be removed in some cases where they should be. Problem was introduced around 1164 while working on INPUT CSV improvements. ============================================================================ A-Shell Development Notes Version 5.1.1184.6 (21 Jun 2010) ============================================================================ 1. --- XTREE bug fix: CellList ID codes # and * (to allow numeric or alphanumeric input in a cell within a CellList (s) column) were having the side effect of the cell being cleared whenever gaining the edit focus. ============================================================================ A-Shell Development Notes Version 5.1.1184.5 (18 Jun 2010) ============================================================================ 1. --- AUI_CONTROL bug fix: resizing image controls was causing the image to be lost when the image filespec name was > 42 characters. 2. --- EZTYP refinement: The "Default Printer" option in the brief printer menu now clears the field as soon as you type a character. ============================================================================ A-Shell Development Notes Version 5.1.1184.4 (18 Jun 2010) ============================================================================ 1. --- AUI_CONTROL bug fix: Internal changes in 1184.1 were causing Leo to fail to display nearly anything in the working dialog. ============================================================================ A-Shell Development Notes Version 5.1.1184.3 (17 Jun 2010) ============================================================================ 1. --- XTREE / XTEXT / INFLD bug fix: Caret was becoming invisible after calling XTREE or XTEXT, and not being reactivated by INFLD. 2. --- AUI_CONTROL bug fix: static icons w/o the MBF_NODISTORT flag were not getting resized/repositioned when then container dialog was resized. ============================================================================ A-Shell Development Notes Version 5.1.1184.1 (14 Jun 2010) ============================================================================ 1. --- INFLD GUI color fix/enhancement: Setting the DFCLR and/or DBCLR fields of the INFCLR structure to a palette index value +64 now overrides the theme color (provided you don't have the Settings > Misc option to "Force standard colors in edit boxes" set). ============================================================================ A-Shell Development Notes Version 5.1.1184.0 (11 Jun 2010) ============================================================================ 1. --- XTREE enhancement: icons may now be loaded into image cells (just like other BMP, TIF, PCX and JPG images). You may either specify the .ICO file (as with the other image types), or you may specify an icon resource using the resname::dllname syntax.) ============================================================================ A-Shell Development Notes Version 5.1.1183.2 (09 Jun 2010) ============================================================================ 1. --- EZTYP partial printing bug fix: the 1182.6 fix below was causing the first form feed to be stripped, even when it was not in the first position of the file. ============================================================================ A-Shell Development Notes Version 5.1.1183.1 (09 Jun 2010) ============================================================================ 1. --- ISAM-A fix: Close a loophole leading to a segmentation fault (or GPF) when a native (non-AMOS-compatible) filespec without an extension was used in an OPEN, ALLOCATE'INDEXED, or INDEXED'STATS statement. (Same as 5.0.1001.4) ============================================================================ A-Shell Development Notes Version 5.1.1183.0 (02 Jun 2010) ============================================================================ 1. --- AUI_CONTROL enhancement: AVI and BMP files may now be loaded from DLL resources (using the same syntax as for icon files, i.e. resname::dllname). ========================================================================== A-Shell Development Notes Version 5.1.1182.7 (01 Jun 2010) ========================================================================== 1. --- EZTYP partial printing bug fix: page ranges starting with the first page were actually starting with the second page. ========================================================================== A-Shell Development Notes Version 5.1.1182.6 (27 May 2010) ========================================================================== 1. --- EZTYP partial printing bug fix: for files containing hard form feeds, selecting a range of pages was resulting in an unwanted leading form feed on the first page, and typically one less page than requested. ========================================================================== A-Shell Development Notes Version 5.1.1182.5 (24 May 2010) ========================================================================== 1. --- UNIX printing bug-fix: Restore original PRTCOPIES default of FALSE (matching the documentation). It was accidentally changed to TRUE in 5.1.1147 as a side-effect of a Windows printing enhancement. ========================================================================== A-Shell Development Notes Version 5.1.1182.4 (20 May 2010) ========================================================================== 1. --- HOSTEX.SBR bug fix: Passing a "-g " clause on a "$ASHELL" command line (to launch a child session of A-Shell) was not working if the parent was launched with a "-g " switch. (It was reverting to the default acorn icon.) ========================================================================== A-Shell Development Notes Version 5.1.1182.3 (18 May 2010) ========================================================================== 1. --- EZTYP bug fix: when using the P (print) option via the EZPRTX.SBX plug-in, after returning, an additional spurious request to print the entire file was being sent. ========================================================================== A-Shell Development Notes Version 5.1.1182.2 (17 May 2010) ========================================================================== 1. --- EZ-SPOOL bug fix: accepting the default printer choice set by the application (in the XCALL SPOOL statement) in the BRIEF menu was resulting in the file being sent to the system default printer (i.e. as if you specified printer=""), rather than to the specified printer. 2. --- XTREE - Combos using the "l" cformat type were returning exitcode 30 rather than 48 on exit. (Problem introduced with the Auto-Complete feature in 1181.0) ========================================================================== A-Shell Development Notes Version 5.1.1182.1 (14 May 2010) ========================================================================== 1. --- MX_NXTCMD enhancement: new flag option can be passed to avoid updating the command file status. (In other words, non-destructive read.) xcall MIAMEX, MX_NXTCMD, CMD$, STATUS {,FLAG} If flag (numeric) is specified and evaluates to a non-zero value, then the next line of the command file (returned in CMD$) will not be removed from the current command file. 2. --- Spanish message translations in ERRMSG.SPA, LITMSG.SPA and SBRMSG.SPA have been substantially improved. (Thanks to René Villar!) ========================================================================== A-Shell Development Notes Version 5.1.1182.0 (13 May 2010) ========================================================================== 1. --- AMOS.SBR enhancement: new pflag value (+4) allows the child RUN program to pass its updated command file status to the parent. There are two main consequences. The first is that any command file inputs that were absorbed by the child program will not be available to the parent. (This is almost always preferable.) The second is that any attempt by the child program to CHAIN will effectively pass the chain information back to the parent, so that when the parent ENDS, it will then execute the chain requested by the child. (This may or may not be desirable, but it is the only way that an attempted CHAIN by the child will have any effect.) 2. --- MX_FILESTATS enhancement: two new optional arguments return the owner and group of the file. Currently this only applies to the UNIX versions, but may be supported under some Windows versions in the future. The complete syntax is now: xcall MIAMEX, MX_FILESTATS, loc'rem, path, bytes{, mtime{, ctime{, & mode{, ver{, hash{, owner{, group}}}}}}} The new parameters, owner and group, may be returned as either integers or strings. If passed as B,4 variables, the numeric value (uid and gid) will be returned. Otherwise, the string names will be returned. ========================================================================== A-Shell Development Notes Version 5.1.1181.6 (13 May 2010) ========================================================================== 1. --- DELCHR.SBR bug fix: when the string variable (2nd param) had no trailing null, the byte following the end of the variable in memory was being set to zero. 2. --- XTREE refinement: date sorting now determines date order from Format= clause (see 1163.1 below) if available. Otherwise it uses the LDF (as it does now). ========================================================================== A-Shell Development Notes Version 5.1.1181.5 (06 May 2010) ========================================================================== 1. --- INFLD auto-complete enhancement: it is now possible to change the width of the list box to be something other than the same width of the edit field. This can be useful when you want to show more information (i.e. more columns). To accomplish this, insert a prefix at the start of the the SETDEF parameter of the form [widthspec], where widthspec may be: +### increase list width by ### columns -### increase list width by ### columns (but start ### columns to the left of the field) ### set width to ### columns (starting in the same column as field) For example: SETDEF = "[+4]1~10~x~S~~11~4~x~S~~~" + ITEMLIST$ The above SETDEF defines 2 columns (1-10 and 11-14), and adds 4 to the list width (so it is 4 columns wider than the field, which is presumably 10 columns wide to match the first column of the list.) 2. --- INFLD auto-complete refinement: when there are multiple columns in the list, the first display column is always the one associated with the field. (Previously, this was mostly true, but it was possible to set another column to be the active column by clicking on it.) 3. --- INFLD auto-complete enhancement: you may now require that the entry match one of the items in the current list, by adding the TYPE code ||S. Previously, and otherwise, list matching was/is not enforced. Note that unlike the case where ||S is used with a combo box, the field still operates like a normal editable field (otherwise the point of auto-complete would be lost). Also note that when using ||S, it is critically important that the SETDEF list items are formatted so that each item width (or at least the first column-equivalent of each item) matches the field width according to MAXCHARS. ========================================================================== A-Shell Development Notes Version 5.1.1181.4 (06 May 2010) ========================================================================== 1. --- Compiler bug fix: memory corruption was occurring (generally causing a nasty crash of A-Shell) when the size of a DEFSTRUCT exceeded 4K. 2. --- ISAM 1.1 bug fix: use of the or /B:#### switch in ISMBLD (to use non-standard IDX block sizes) was leading to a crash under big-endian machines (like AIX), due to a byte swap mixup in the block size field of the ISAM rock. ========================================================================== A-Shell Development Notes Version 5.1.1181.3 (05 May 2010) ========================================================================== 1. --- ATE / XTREE bug fix: 1181.2 introduced a change that was causing ATE to crash intermittently when invoking XTREE. ========================================================================== A-Shell Development Notes Version 5.1.1181.2 (03 May 2010) ========================================================================== 1. --- //IMAGE enhancement: A new flag and optional second filespec parameter have been added to allow more flexibility in handling the case where the specified image is not present. Normally in such a case, the text of the //IMAGE command will be printed at the current "cursor" location on the page. If you would rather have nothing printed, then you can specify the new flag IMGF_OPTIONAL (&h020). You may also specify a second image filespec, which, if the first image is not present, will be printed instead. Either or both of these can be useful in cases where the image file name is derived from some other data (such as a part number), but is not always present (i.e. not every part has an associated image). Rather than the application having to check individually for the presence of each one, the //IMAGE command can now do the work for you. Complete new syntax: //IMAGE,imagespec,left,top,right,bottom{,flags,borderwidth,imagespec2} Note that the IMGF_OPTIONAL value can also be expressed as the text "OPTIONAL", e.g.: //IMAGE,p123.jpg,100,100,200,200,OPTIONAL,1,generic.jpg In the above example, if p123.jpg is present, it will be printed. If not, and generic.jpg is present, it will be printed. If neither is present, nothing will be displayed (including no border), and there will be no indication of an error. 2. --- A-Shell/Windows/ATE bug fix: after using the File > Load or > Save As menu options, the current internal A-Shell directory might have been changed, causing problems for subsequent operations which rely on the internal current directory context. 3. --- Auto-complete (see 1181.0) bug fix: in some cases, controls which were covered by the drop-down list box would disappear when the drop-down list box was removed. 4. --- Auto-complete refinement: list will now appear above the edit field (instead of below) if the edit field is too close to the bottom of the parent window. Note, however, that in terms of the up/down arrow keys used to navigate between the list and the edit box, the list will always behave as if it were below the edit box. In other words, to go from the edit box to the list, use down arrow. And to tell the app to display a continuation of the list, use down arrow (or Control+down arrow) from the last item in the list. 5. --- Auto-complete enhancement: The COLDEF portion of the SETDEF string may now contain more than one XTREE column definition, provided that the primary column (the one that corresponds to the edit field) is the first real column, and that the list items in the SETDEF list conform to the COLDEF. As an example, to give some items in the list a special background color, you might define a second column to contain the color code, plus a pseudo-column to define the RGBbg value: SETDEF = "0~0~x~H~RGBbg=220,230,240,A~~1~10~x~S~~11~1~x~cH~~~" & + ",Apples A,Bananas ,Peaches A,Watermelon ,," In the above list, we defined an RGBbg value assocated with a pseudo-column, then defined 2 real columns - the first ten characters long (the primary column) and the last one character to contain the color code. The list then specifies the color code "A" for Apples and Peaches, so those two items would appear in the auto-complete list with the specified background color. Note that each item in the list (as measured by the space between the delimiters) must match the total length of all the real columns (11 in this example). 6. --- Auto-complete refinements: Several other minor technical and user interface issues were cleaned up. ========================================================================== A-Shell Development Notes Version 5.1.1181.1 (29 April 2010) ========================================================================== 1. --- XTREE refinement: Combo boxes (cell editing) now grow to fill the row height, if necessary. Previously, the row height would be increased if necessary to match the natural combo box height (if the natural combo height was more than the row height), but not the other way around. It doesn't change the fundamental operation, but now looks better. ========================================================================== A-Shell Development Notes Version 5.1.1181.0 (28 April 2010) ========================================================================== 1. --- New INFLD GUI Feature: Auto-complete. The concept here is whenever there is a pause in the user's typing (currently 0.5 secs), INFLD exits back to the application with exitcode 30, allowing the application to create a list of possible ways to complete the field based on the characters already entered, and pass this list back to INFLD. INFLD then displays a small list box below the field with the specified choices. The user can down-arrow or click into the list box to select any of the items. The user can also return to the field by hitting left or right arrow, or by typing a character or the BACKSPACE key. To activate auto-complete mode, add the following TYPE codes: "||a)|]" "||a" activates auto-complete mode, but in order for the re-entry process to work as expected, the ")" (re-enter at end of field) and "|]" (don't pad or strip trailing spaces) are strongly recommended. On re-entry after INFLD exits with exitcode 30, SETDEF should be formatted as follows: ~ is a standard SETDEF list of allowable options, except that each entry must be the same length. (Use space padding as needed to achieve this.) Note that it doesn't make much sense for the length of the entries to exceed the MAXCHARS value for the field. is an XTREE-style column definition string, which defines just one column, typically using cformat S (for string), and whose width matches the width of the items in the . (The column title is ignored.) Theoretically you can also use any of the cformat or XTREE Advanced Coldef Options that made sense for the selection list, but none are typically needed. For example: SETDEF = "1~7 ~S~~~,ACME ,Adams ,Affleck,Azure ,," The above SETDEF string illustrates a possible response to the user entering "A" and then waiting 0.5 seconds (or hitting the down-arrow) to display the auto-complete list. It starts with a coldef indicating 7 character string entries, followed by a set-list containing such items. Note the three tildes (~~~) separating the two strings (two are part of the coldef string, and one more to separate the coldef and set-list strings). Also note the trailing spaces on the list elements to give them each 7 characters. Limitations and comments: - Auto-complete can only be used with "simple" edit fields (no combo boxes, radio buttons, checkboxes, date pickers, spinners, multi-line mode, or forms). - The list containing the options will occupy a maximum of about 5 "grid rows" BELOW the INFLD control. If the INFLD control is too close to the bottom of the screen, the height of the list will be truncated. (There is currently no support for the list appearing above the field.) - Internally, the list control is assigned exitcode -63 (VK_xF63). You should not have any controls in that range (-33 to -99 is generally reserved for A-Shell.) - When INFLD exits with exitcode 30 (asking the app to refresh the list data), you must re-enter with a proper SETDEF string (as described above). Failure to re-enter will leave the list on the screen (unless you manually delete it by some other means, such as TAB(-1,0) or destroying the parent dialog.) Re-entering with an empty or invalid SETDEF will generate undefined results. - Obviously, you want to minimize the time the application takes to respond to exitcode 30. Characters typed during that interval should be queued up but won't appear until the application returns to INFLD. - There is no particular limit to how many items can be in the list, but as a matter of practicality or efficiency, you should keep it reasonably short. (For example, if the user enters "A" and pauses, you may not necessary want to generate a list with all of the items that start with "A".) The user can effectively request more items by pressing Control+down arrow from the bottom of the list. (See next comment for more details.) - Requesting more items: If the user wants to see more items in the list, she can either type some more characters (effectively refreshing and narrowing the choices), or she can press Control+down-arrow from the last item in the list, which generates exitcode 31. Applications can respond to exitcode 31 by either building a longer list, or by replacing the current list with the next several items in sequence. Note that if you don't want to require the Control key for this purpose, add the advanced coldef option ScrollMode=Tree. See the SOSLIB sample program INFAC1.BP for a simple working example. 2. --- COPY.LIT and MOVE.LIT 3.2(131) new switches: /MINDAYS:### (Ignore files changed within last ### days) /MINSECS:### (Ignore files changed within last ### seconds) /? (Display syntax and switch info) Note; COPY.LIT and MOVE.LIT are identical. Their behavior changes based on the name of the module. The /MINDAYS and /MINSECS switches are also supported by ERASE.LIT ========================================================================== A-Shell Development Notes Version 5.1.1180.0 (20 April 2010) ========================================================================== 1. --- TCPX.SBR enhancement: STARTTLS protocol now supported via a new opcode and flag (in ashell.def): define TCPOP_STARTTLS = 12 ! TCPX opcode to initiate STARTTLS define TCPXFLG_STARTTLS = &h00200000 ! Use with TCPOP_CONNECT Limitations: As with TLS connections (introduced in 1179.0), currently only client connections (TCPOP_CONNECT) are supported. Also, the TIMER option seems to interfere with the TLS handshaking. If having problems, turn that off and just use blocking mode, in conjunction with TCPOP_CHECK to check for data. To initiate a STARTTLS connection, use the TCPOP_CONNECT opcode, along with the TCPXFLG_TLS and TCPXFLG_STARTTLS flags to initiate the unencrypted connection. When you want to start the TLS negotiation, use whatever unencrypted means are required to inform the server that you are about to start negotiating TLS, and then call TCPX.SBR with opcode TCPOP_STARTTLS. After the successful return (STATUS=0), you will be in encrypted mode, and the TCPXFLG_STARTTLS flag will no longer be needed. (However, as mentioned in the 1179 notes, TCPXFLG_TLS is required with EVERY call to TCPX.SBR if you are using TLS or STARTTLS protocol, including those calls prior to using TCPOP_STARTTLS.) Note: EMAILX.SBR 5.1(121) uses this new feature to support the STARTTLS protocol extension to SMTP, permitting, for example, the use of the GMAIL SMTP server. See the notes below under 1179 for further details about the TLS extensions to TCPX.SBR. Linux installation requirements: - Standard installation of the GnuTLS package, preferably version 2.8.6 (from www.gnu.org). - Copy the latest libashtls.so.1.0.xxx (xxx currently at 204) into the $MIAME/bin directory (where the ashell executable is). - Create /usr/lib/libashtls.so.1 as a symbolic link to the libashtls library in the $MIAME/bin directory, e.g.: # ln -s $MIAME/bin/libashtls.so.1.0.204 /usr/lib/libashtls.so.1 Windows installation requirements: - Download http://www.microsabio.net/dist/other/gnutls/gnutls-2.8.6.zip and unzip the contents into the bin directory (where ashw32.exe is). - Download http://www.microsabio.net/dist/51dev/bin-win/libashtls-204.zip and unzip the contents (libashtls.zip) into that same bin directory. Debugging notes: Use the "SOCKS" trace option (SET TRACE SOCKS ON) to record many details about the operation of the TLS library. For even more detail (particularly about the handshaking process), also set the XDEBUG trace option. ========================================================================== A-Shell Development Notes Version 5.1.1179.4 (16 April 2010) ========================================================================== 1. --- APEX refinement: Continuation of 1179.3, which didn't handle the case where APEX was not forcing the application to wait. ========================================================================== A-Shell Development Notes Version 5.1.1179.3 (16 April 2010) ========================================================================== 1. --- APEX refinement: the COPIES parameter passed to SPOOL/EZSPL is now used to set the default in the printer dialog. (Previously APEX effectively set the copies back to 1.) ========================================================================== A-Shell Development Notes Version 5.1.1179.2 (14 April 2010) ========================================================================== 1. --- Windows printing bug-fix: close a memory leak which was causing memory handles to be used up during printing. (After a couple of dozen printing operations, it would run out of memory handles.) ========================================================================== A-Shell Development Notes Version 5.1.1179.0 (12 April 2010) ========================================================================== 1. --- TCPX.SBR enhancement - introduce preliminary support for TLS/SSL via the new flag TCXPXFLG_TLS (&h00100000). There are several notes and caveats to consider: - You must pass the TCPXFLG_TLS flag with every call to TCPX.SBR. This will probably necessitate that the flags parameter be mapped as B,4. Note that the flag is above the range normally used for the transfer size for TCPOP_READ and TCPOP_WRITE (where flags may be used to specify the number of bytes to transfer). - The multitude of variations and parameters relating to secure connections (ciphers, protocols, certificate types, algorithms, etc.) are currently all defaulted to a "standard set". Future releases will elaborate on this. - Passing the TCPXFLG_TLS option to TCPX.SBR will cause the LIBASHTLS.DLL module to be loaded, along with several other DLL's which are part of the GnuTLS package. Currently these are all released together in a zip which should be unpacked into the %MIAME%\bin directory. - See the sample program SOAP1.BP for an example of using the TLS feature to submit a SOAP request to a secure web server. ========================================================================== A-Shell Development Notes Version 5.1.1178.1 (10 April 2010) ========================================================================== 1. --- Dynamic memory bug fix: An in-process XCALL AMOS invoked from within a function or procedure was freeing dynamic memory that may still have been in use by the calling program, leading to a spurious error 3 (out of memory). The error was also logged in ashlog.log as "Attempt to reference expired dynamic memory", but "A" at the start of the message was being replaced by garbage due to an error in the message format spec. 2. --- Clipboard bug fix: Accented characters copied from A-Shell were sometimes failing to paste properly into Unicode apps, depending on whether A-Shell was in ANSI or OEM character set mode. ========================================================================== A-Shell Development Notes Version 5.1.1178.0 (06 April 2010) ========================================================================== 1. --- AUI_CONTROL enhancement: new cstate flag MBST_NORMALIZE (&h10000000) may be used with CTLOP_CHG to change the state of a minimized or maximized window back to normal. Also, MBST_MINIMIZE now works with CTLOP_CHG. (Previously it only worked with CTLOP_ADD.) ========================================================================== A-Shell Development Notes Version 5.1.1177.9 (05 April 2010) ========================================================================== 1. --- TCPX enhancement: You may now set the SO_LINGER socket option to "on" by passing the flag TCPXFLAG_LINGER (&h0100) and then putting the desired linger time (in seconds) into the 4th (high byte of B,4) byte of FLAGS during a TCPOP_CONNECT or TCPOP_ACCEPT call. For example: TCPOP = TCPOP_CONNECT ! (or TCPOP_ACCEPT) FLAGS = FLAGS or TCPXFLAG_LINGER ! activate SO_LINGER option FLAGS = FLAGS + (5 * (2 ** 24)) ! set timer to 5 seconds The SO_LINGER option affects the behavior of the TCPOP_CLOSE operation, relative to data that has been sent but may not yet have been delivered. There are three possibilities: By default, the SO_LINGER option is turned off, which means that the close operation returns immediately, but if there is any data still remaining in the socket send buffer, the system will try to deliver it to the remote end. If SO_LINGER is turned on, and the timer value is 0, then the connection will be aborted when TCPOP_CLOSE is called. Any data still remaining in the socket send buffer will be discarded, and a reset packet (RST) will be sent to the remote end, rather than the normal termination sequence. If SO_LINGER is turned on, and the timer value is non-zero, then the kernel will "linger" when the socket is closed either all of the data in the send buffer has been sent and acknowledged by the remote end, or the timer expires. If the socket is blocking, TCPOP_CLOSE will not return until one of those conditions is met. (If non-blocking, it will return, possibly with STATUS set to EWOULDBLOCK, but the kernel will still linger as just described.) Note that the SO_LINGER timer should not be confused with the TCPX.SBR TIMER parameter, which relates to the time until the connection is made or accepted. 2. --- GUI bug fix: Certain kinds of image filespecs (particularly those already in native format) were getting corrupted before being processed, leading to a failure to load the image (e.g. icon or bitmap) associated with some controls. (Problem was introduced in edit 1176.) 3. --- ABOUT.LIT 2.2(108) now displays license options for the auxiliary ATE license. Also, when the ATE client is supplying its own license even though the server offers server-based licensing, a warning message now displays at the end of the ABOUT display. ========================================================================== A-Shell Development Notes Version 5.1.1177.8 (02 April 2010) ========================================================================== 1. --- XCALL HOSTEX bug fix (UNIX only): Passing the STDOUT$ argument was causing the STS argument to always return 0. ========================================================================== A-Shell Development Notes Version 5.1.1177.7 (31 March 2010) ========================================================================== 1. --- File hook bug fix: The "refinement" in 1177.6 essentially broke all detection of changes in the WRITE hooks. ========================================================================== A-Shell Development Notes Version 5.1.1177.6 (30 March 2010) ========================================================================== 1. --- MX_COMPIL enhancement: new STATUS parameter returns 0 for success (else error), making it easier to detect if the compil succeeded. Complete syntax is now: xcall MIAMEX, MX_COMPIL, filename, switches {,defbuf, vcpattern, status} filename [s,in] is the filespec of the source program to compile switches [num,in] is a bitmap of switch values. Note recently defined bits: &h00200000 ! /C:sym=value &h00400000 ! /IEEE &h00800000 ! /VC:pattern &h01000000 ! /LI defbuf [s,in] contains one or more symbol=value pairs (from /C:sym=value switches), separated by chr(10). vcpattern [s,in] contains the pattern specified in /VC:pattern status [num,out] returns 0 if the compil succeeds, else failure. 2. --- Compiler bug fix (edit 453): Correct a problem with patch 449 (see 1177.1) which caused spurious syntax errors to be reported in valid ISAM-A statements containing ISAM'KEY(x). 3. --- Compiler minor fix: Certain errors were causing spurious syntax errors to be reported on the subsequent line. (This didn't change the fact that the program had errors and thus would not compile, but did confuse things by making it look worse than it was.) 3. --- Compiler minor fix: The %v component of a pattern specified with /VC:pattern (see 1177.2) was getting translated to "" rather than "0" when the file contained no PROGRAM or VEDIT statement. 4. --- COMPIL.LIT / COMPLP.LIT / OCMPIL.LIT 1.1(123) update: /VC:pattern now supported. 5. --- File hook refinement: The PRE'REC data buffer is now refreshed by WRITE operations as well as READ operations. ========================================================================== A-Shell Development Notes Version 5.1.1177.5 (29 March 2010) ========================================================================== 1. --- Improved compatibility with Asian language configurations. (Extension of 1175.4 improvement.) Now chr(63) is accepted as a substitute for chr(250) or chr(255) is the VK_xxx virtual key encoding sequence. ========================================================================== A-Shell Development Notes Version 5.1.1177.4 (26 March 2010) ========================================================================== 1. --- XTREE fix to SelChgExit=### feature: The tree was sometimes exiting immediately on entry (because the "selection change" message was firing as a result of internal positioning of the selection bar.) It now waits for the selection to change as the result of a user action. 2. --- XTREE enhancement to SelChgExit=### feature: When the selection is changed by keyboard action, the exit is delayed (1/3 second by default). This eliminates the situation where the user wants to jump from, say, row 5 to 10, but instead of clicking on row 10, they use the down arrow to scroll down. Previously, this would have exited on row 6, which was generally wasn't desirable. You can change the default delay by adding it to the end of the SelChgExit clause, separated by a comma: SelChgExit=exitcode{,delay}~~~ Where exitcode is the numeric value of the exitcode to be generated on change of selection, and delay is the desired delay in milliseconds (default 333 milliseconds). There is no delay when the selection is changed by clicking. In the case of changing the selection via the keyboard search feature, the delay is increased by 1 second to allow the operator to more easily type the necessary characters to identify the desired item to be selected. ========================================================================== A-Shell Development Notes Version 5.1.1177.3 (25 March 2010) ========================================================================== 1. --- Compiler enhancement (edit 452) : To assist those want to use /M to identify any unmapped variables as errors (highly recommended to avoid bugs caused by mistyped variable names which are then auto-mapped if you don't use /M), actual map statements for the auto-mapped variables will now be appended to the bottom of the LSX file (generated with /LF). These auto-generated map statements may then be reviewed and copied back into the original program, so that it may be compiled with /M. Obviously, if you perform this operation blindly, it doesn't buy you much since all of your misspelled and implicitly mapped variables will now simply become explicitly mapped. But the theory is that it will make it easier for you to review the auto-mapped variables for potential errors, perhaps by sorting them to locate variations of the same variable, or by looking them up in the original program to see whether the usage is valid. And from that point on, the ability to use /M will certainly save you time tracking down bugs in new development caused by typos in new variable names. If you tend to use the same common (and unmapped) variable names in many programs, you may want to move the generated map statements into a common ++INCLUDE module. Note: in the case of implicitly mapped array variables, the array size in the LSX file will be left empty, leading to a compiler error if you try to compile without editing the MAP statement to specify the array size. This was a deliberate decision to force you to review such variables, since depending on the compiler's implicit rules for unmapped arrays seems like a particularly cordial invitation to chaos. ========================================================================== A-Shell Development Notes Version 5.1.1177.2 (24 March 2010) ========================================================================== 1. --- New compiler switch (edit 450): /VC:pattern (VC stands for "Version Copy") When specified, the compiler makes a backup copy of every source module encountered (the main program and any ++include files) according to the pattern. The idea is to provide a simple way to archive source code, which is sensitive to program versions. The pattern is made up of literal characters, plus any of the following: %d = directory of the original file (e.g. c:\vm\miame\dsk0\150100\) %f = filename of the original file, minus extension (e.g. myprog) %e = extension of the original file (e.g. bas) %v = vedit value of the file. For the main file, this comes from the program statement, e.g. "PROGRAM name,M.ms(eee)" where M=VMAJOR, m=VMINOR, s=VSUB and ###=VEDIT. For included files, it comes from a comment found anywhere in the file, having the following form: !VEDIT = ### Spaces around the "=" are optional, and the ### may be 1-5 digits long. Following the last digit, to the remainder of the line, no characters are allowed except spaces and "!". (These restrictions are to avoid confusing an occurrence of "VEDIT" in, say, an assignment statement, with a declaration of the version number of the source file.) Note that VUE uses the same rules to identify the VEDIT statement, used in two special commands related to using the VEDIT value: ^_E increments the VEDIT value and inserts a partially filled in dated edit history line at the cursor location ^SE inserts a "[###]" at the cursor location (### = the current VEDIT value) If no VEDIT value is defined for the current file, it is treated as 0. For example, consider an original program file (after conversion to local syntax) of c:\vm\miame\dsk0\909060\sqltest4.bp : /vc:%d%f-%v.%e ==> c:\vm\miame\dsk0\909060\sqltest4-104.bp /vc:c:\backup\%f.%e ==> c:\backup\sqltest4.bp /vc:%dalpha-%v-%f.bak ==> c:\vm\miame\dsk0\909060\alpha-104-sqltlest4.bak The pattern may also be quoted, which is necessary in order for it to contain spaces or slashes, i.e., under UNIX we might have: /vc:"%dback up/%f.%e" ==> /vm/miame/dsk0/909060/back up/sqltest4.bp Without the quotes, the pattern will be terminated at the first space or forward slash. Note that if the %d (directory) directive is omitted from the pattern, the copied file will be placed in the current directory. (This would be one easy way to get all of the ++included modules used by a program into one directory. See the /LI switch below for a related feature.) 2. --- New compiler switch (edit 451): /LI (for Local Include) When specified, the directory information on any ++INCLUDE statement is ignored (the file is loaded from the current directory). This might be useful in situations where, for reasons of portability or archival, you might consolidate all of the ++include modules associated with a single program into a single directory. Compiling with /LI would then eliminate the need to edit all of the ++INCLUDE statements to remove the directory specifications. For example, you might use the switch /VC:c:\archive\%f.%e to make a copy of all the source modules associated with a program into the directory c:\archive. To compile to copy made in that directory, you could then log into that directory and use the /LI switch. Note that a related feature is always activated: when the compiler is unable to locate the specified ++include file in the specified directory, or in the BAS: account, it will look in the location where the main source file was loaded from. (In comparison, the /LI switch ignores the specified and BAS: locations and only looks in the current directory.) Note that when using the compil.exe version of the compiler, if you are compiling from a difference directory than where the source files are, you may need to specify the -l switch in order to establish the current directory context from which the -li switch will be processed. ========================================================================== A-Shell Development Notes Version 5.1.1177.1 (23 March 2010) ========================================================================== 1. --- Compiler refinement (edit 449): The non-subscripted variable name ISAM'KEY is now allowed when compiling with /X:2. (In other words, it is no longer confused with the subscripted keyword ISAM'KEY(x) which is used in ISAM'PLUS FIND and GET statements.) ========================================================================== A-Shell Development Notes Version 5.1.1177.0 (23 March 2010) ========================================================================== 1. --- PolyShell / ATE refinement: XCALL MESAG now automatically reverts to text mode when running under PolyShell, even when the terminal supports GUI. (The GUI message box interferes with the ability to swap to a new job, which is a common urge when faced with a strange error or warning message.) 2. --- ATE / MESAG.SBR refinement: The ATE protocol sequence which launches a GUI-mode message box in response to XCALL MESAG has now been made more robust by enclosing it in an ATE transaction wrapper. Previously, it was too easy to mess up the sequence by typing ahead. ========================================================================== A-Shell Development Notes Version 5.1.1176.9 (19 March 2010) ========================================================================== 1. --- ISAM 1.x auto-expansion bug fix: Auto-expanded indexes were reporting the wrong number of total and available IDX blocks in information utilities such as ISMROK.SBR and ISMPAR.SBX. The problem was confined to some information-only fields in the IDX and didn't affect ISAM operations on the file. Typically it was not apparent in ISMDMP because is doesn't report the total number of IDX blocks. (It probably went so long without detection because auto-expansion made the issue somewhat moot.) 2. --- XTREE date picker refinement: Entering a single digit into the MM or DD sub-field and hitting an exit key now updates the field before exiting. Previously, the exit key took precedence, causing the value of the date prior to updating the last subfield to be the returned value. 3. --- XTREE date picker bug fix: The style of the date picker was being interfered with by certain other cformat flags (such as centering). For example, instead of a drop-down button for displaying the date picker calendar, you may have ended up with an up/down control instead. 4. --- XTREE date picker enhancement: You may now pass the following Date Picker calendar style flags by appending the decimal representation of the sum of the desired flags to the end of the Format= string (following a "|" delimiter). (The symbols are defined in ashell.def, and are shared with the Month Calendar standalone control): MCS_WEEKNUMBERS (4) The month calendar displays week numbers (1-52) to the left of each row of days. MCS_NOTODAYCIRCLE (8) The month calendar does not circle today's date. MCS_NOTODAY (16) The month calendar does not display today's date at the bottom of the control. MCS_NOTRAILINGDATES (64) (Vista+) Dates from the previous and next months are not displayed in the current month's calendar MCS_SHORTDAYSOFWEEK (128) (Vista+) Short day names are displayed in the header For example: Coldef$ = "1~8~Trx Date~DE~Format="MM/dd/yy|84~~" The above Coldef$ defines an editable date column using MM/dd/yy format and with the MCS_WEEKNUMBERS, MCS_NOTODAY, and MCS_NOTRAILINGDATES calendar style options. ========================================================================== A-Shell Development Notes Version 5.1.1176.8 (18 March 2010) ========================================================================== 1. --- XCALL SERCH enhancement: indexes using span'blocks (including record sizes up to 2048). Previously it only supported record sizes up to 512 with traditional blocking. 2. --- Terminal emulation refinement (UNIX?) - TAB(-1,0) now resets the alternate character set mode as well as clearing the screen. ========================================================================== A-Shell Development Notes Version 5.1.1176.7 (16 March 2010) ========================================================================== 1. --- EZSPL bug fix: the BRIEF menu mode had some formatting problems, particularly for non-English languages, and it failed to properly save and restore the screen. ========================================================================== A-Shell Development Notes Version 5.1.1176.6 (15 March 2010) ========================================================================== 1. --- XTREE refinement: XTF2_AUTOEXPCOL no longer automatically overrides the wrap option in the last column. If any columns have the wrap attribute, it assumes that there will be a vertical scroll bar and calculates the column width expansion accordingly, leaving the wrap settings in place. (The only downside of this change is that if there are not enough items to require a vertical scroll bar, you could end up with a vertical white strip on the right edge, where the vertical scroll bar would have gone.) ========================================================================== A-Shell Development Notes Version 5.1.1176.5 (12 March 2010) ========================================================================== 1. --- XTREE refinement: ExitChars (extended column format option) now work in all kinds of editable cells. (Previously only checkboxes and radiobuttons.) ========================================================================== A-Shell Development Notes Version 5.1.1176.4 (11 March 2010) ========================================================================== 1. --- ATSD refinement: add support for missing TCRTs 106-117 (reverse, underline combinations with no space) for VTxxx clients. (One place where this was really needed was in PCKLST, where you need reverse to see the selected item.) Also, support VT100-style arrow keys. ========================================================================== A-Shell Development Notes Version 5.1.1176.3 (08 March 2010) ========================================================================== 1. --- ISAM 1.1 bug fix: Close a loophole in which a key deletion in an index with odd-length keys might generate a bogus ERF 35. ========================================================================== A-Shell Development Notes Version 5.1.1176.2 (08 March 2010) ========================================================================== 1. --- ATE / PolyShell enhancement: The server now sends its POLYKEY and SWAPKEY definitions to the client during the handshake, so that ATE can automatically release any keyboard hold when the key is used. (This solves the problem of the swap key being ignored during certain server / application states, like sleeping.) If a 1176.2+ ATE connects to an older server (which does not pass the information), the newer ATE will use the SWAPKEY and POLYKEY values from its own miame.ini, and if not defined there, will use as default "`" (grave) and "~" (tilde). 2. --- ASHUPD.LIT 1.0(133) now recognizes program versions when deciding whether an update is needed. Also, an issue with failing to detect the proper platform variation was fixed. Also, an issue with "unrecognized dates" caused by a mismatch between the LDF and OS locale date formatting was fixed. Unfortunately, as the prior version relied on file dates to determine whether to update, if you recently copied or installed an older ASHUPD.LIT, it may fail to detect the need to update itself (in which case you'll need to manually update it.) ========================================================================== A-Shell Development Notes Version 5.1.1176.1 (04 March 2010) ========================================================================== 1. --- Fix session file fspec glitch introduced in 1176.0 (symptom was message saying it couldn't load c:\vm\miamedefault.ash or something like that.) 2. --- MX_TELSER enhancements: Passing 0 for the port value now closes/releases any socket resources opened by a prior MX_TELSER call. This allows the operaton to be cleaned up and restarted. Also, when the client disconnects, the server job now reliably receives error 250. (Previously it may have only gotten a ^C signal.) ========================================================================== A-Shell Development Notes Version 5.1.1176.0 (02 March 2010) ========================================================================== 1. --- A-Shell/Windows/ATE command line enhancement: the application icon can now be specified as a file, using the syntax: -g fspec.ico The file must be either in the PATH (which will aways include the directory where the ashw32.exe is loaded from), or in a subdirectory "icons" below the %MIAME% directory (as determined by a predefined MIAME environment variable or the location of the miame.ini). This eliminates nearly all of the need to embed application icons into the ashw32.exe, so we have removed them. Temporarily, we will include in the standard release copies of all of the icons previous embedded, so no particular action is required. However, at some point in the near future, we will probably drop them as well, and leave it to individual developers to add their own custom icon(s) to the package. The one problem which can be foreseen is that desktop shortcuts which now use an icon embedded within the ashw32.exe will be subject to having their icon reset if Windows (or the user) decides to update the shortcut. In that case, you'll need to just use the "Browse" button in the shortcut properties to browse the %MIAME%\icons directory to locate the standalone copy of the desired icon. To prevent that from happening, you can reset the application icon using MX_SHORTCUT, so that it points to the new discrete copy of the ico file. Hopefully, all will agree that this is a relatively minor inconvenience compared to the benefits of decoupling custom icons from the executable. Note: because of the need for the standalone ico file to exist in order for a custom icon to work within A-Shell, this update is best done by running the full install package (rather than just updating the ashw32.exe). 2. --- Text transparency bug fix: a bug introduced in 1175.5 was having the symtom of some GUI text appearing as solid rectangles. 3. --- AUI_CONTROL enhancement: MBF2_PIXSIZE now works with dialogs. Note that in such as case, the MBF_ALTPOS flag causes the dialog client area to be sized to match the erow and ecol parameters in pixels. Otherwise, the erow and ecol values are used to determine the overall dialog size. ========================================================================== A-Shell Development Notes Version 5.1.1175.7 (23 February 2010) ========================================================================== 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. 2. --- Max length of passwords encrypted with MX_PWCRYPT increased from 24 to 128. ========================================================================== A-Shell Development Notes Version 5.1.1175.6 (22 February 2010) ========================================================================== 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. 2. --- XTREE bug fix: the click position on an inactive tree was not properly overriding the xtr'targetrow value when that tree became active. ========================================================================== A-Shell Development Notes Version 5.1.1175.5 (21 February 2010) ========================================================================== 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. 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.) 3. --- GUI fix: MBF_DIM was not working as advertised with MBF_STATIC+MBF_FRAME. 4. --- MX_DEFTABXYZ (for defining 3D tab effects) enhancements: New ptype codes: 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.) 5. --- READ statement (for reading DATA) now supports &h (hex) and &o (octal) values. 6. --- GDI printing bugfix: The landscape switch (32768), when passed to XCALL SPOOL or EZSPL, was not overriding an ORIENTATION=PORTRAIT statement in the printer init file. 7. --- XTREE accessibility refinement: A left click anywhere within a checkbox or radiobutton CELL is now treated as equivalent to a click right on the checkbox or radiobutton bulls eye. 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. 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". ========================================================================== A-Shell Development Notes Version 5.1.1175.4 (19 February 2010) ========================================================================== 1. --- 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.) ========================================================================== A-Shell Development Notes Version 5.1.1175.3 (19 February 2010) ========================================================================== 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 cases are in XTREE file mode where the FILIDX parameter was passed, or when using REDIMX to shrink an array.) The problem was introduced in 1174.8. 2. --- PAD$(expr,len) function refinement: increase the maximum supported length of the resulting string from 257 to 4K bytes 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. ========================================================================== A-Shell Development Notes Version 5.1.1175.2 (17 February 2010) ========================================================================== 1. --- 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. ========================================================================== A-Shell Development Notes Version 5.1.1175.1 (16 February 2010) ========================================================================== 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. 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. ========================================================================== A-Shell Development Notes Version 5.1.1175.0 (12 February 2010) ========================================================================== 1. --- INFLD GUI enhancement: you may now replace the standard context menu for normal INFLD edit controls and also INFLD combo box controls, by adding the desired context menu definition string to tooltip string (which is itself part of the HLPIDX parameter). The syntax is: >tooltip\menudef The backslash marks the end of the tooltip definition and the beginning of the menudef string. The menudef syntax is the same as that for XTREE PopupMenu definitions, i.e.: text,command;text,command; ... ;text,command The command fields either be virtual keycode strings (e.g. VK_xF101), or arbitrary text (optionally containing control sequences using ^ as the leadin), or $CUT, $COPY, or $PASTE (for the standard clipboard operations). The text fields will be displayed in the context menu as-is, with the exception of "--------" which displays a separator line. For example: >tip\Cancel,VK_ESCAPE;All,*^m;--------,;Cut,$CUT;Copy,$COPY;Paste,$PASTE The above tooltip string defines a tooltip "tip" and a context menu with the following options: "Cancel" sends an ESC (VK_ESC). "All" enters the character "*" into the field followed by a carriage return (*^m). "Cut", "Copy", and "Paste" act like the standard operations. Note that the HLPIDX parameter may contain a help key, a tooltip, a context menu definition, and/or a click command, but they must be in the following order: help key >tooltip \menudef ~clickcmd Furthermore, if you have a menudef but not a tooltip, you must specify the ">" anyway, e.g.: help key >\menudef ~clickcmd (This latter condition avoids compatibility issues with help keys that might contain "\", although any existing tooltips which contain "\" will be effectively truncated at that point, with a probably non-functional context menu replacing the standard one. While this could be annoying, it seems remote enough and not critical enough to go to additional lengths with cumbersome syntax to avoid.) 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.) ========================================================================== A-Shell Development Notes Version 5.1.1174.9 (09 February 2010) ========================================================================== 1. --- UNIX AUXLOC: printing bug fix: multiple copies weren't working unless printer init file had PRTCOPIES=TRUE. 2. --- APEX printing bug fix: requesting multiple copies and a page range from within the APEX print dialog was printing only one copy unless the page range selected included the last page of the file. 3. --- TRACE refinement: TRACE=FOPENS now traces file deletes. ========================================================================== A-Shell Development Notes Version 5.1.1174.8 (26 January 2010) ========================================================================== 1. --- ATE refinement: increase default max wait for ATE command response from 5 to 7.5 seconds. (We were seeing rare cases of MX_FILESTATS after a file transfer taking slightly longer than 5 seconds to respond on a slow network, leading false reports of file transfer failures, particularly in ATEAPX.SBX using terminal channel method.) ========================================================================== A-Shell Development Notes Version 5.1.1174.7 (26 January 2010) ========================================================================== 1. --- MX_FILEHOOKS bug fix: Disabling an existing file hook for an open file wasn't having the desired immediate effect. Also, the HFF_AUTO_DEL flag was only disabling the hook on close, as opposed to deleting it. 2. --- XTREE bug fix: XTF2_DOWN and XTF_UP were sometimes exiting from each other's position (i.e. down arrow from top row, up arrow from bottom row.) 3. --- XTREE refinement: XTF2_DOWN and XTF_UP should now work in checkbox cells. 4. --- XTREE refinement: Multiple column sorting (by holding down the Control key while clicking the column headers) now works more intuitively: with the sort priority following the chronological order the columns were clicked, rather than the other way around. ========================================================================== A-Shell Development Notes Version 5.1.1174.6 (25 January 2010) ========================================================================== 1. --- Restore several internal icons which got accidentally removed in 1174.2. ========================================================================== A-Shell Development Notes Version 5.1.1174.5 (25 January 2010) ========================================================================== 1. --- Compiler bug fix (edit 448): An error in the macro expansion logic related to MAP statements involving nested structures was causing the resulting MAP statements to be truncated. Generally this would have caused a compilation error, but in some cases, the truncation escaped detection by the compiler, leading to structures that were effectively missing fields. If these fields were never referenced directly, the problem could have gone entirely undetected (by the compiler or runtime) thus leading to very difficult to diagnose problems. The problem was most likely rare, but it is strongly recommended that all programs using structures be recompiled just to make sure. (Thanks to Stephen Funkhouser for identifying and reporting the problem!) 2. --- MX_FILEHOOK bug fix: HOOKOP_DISABLE, HOOKOP_ENABLE and HOOKOP_DEL were only operating on the first hook in the table when filespec$ = "*" (instead of operating on every file hook in the table). Also, the return STATUS for those opcodes now more accurately affects the number of file hooks actually changed by the operation. (For example, if you use HOOKOP_DISABLE with filespec$ "*" to disable all hooks, the return status should indicate the number of hooks which were changed from enabled to disabled (rather than the total now disabled). ========================================================================== A-Shell Development Notes Version 5.1.1174.4 (22 January 2010) ========================================================================== 1. --- XTREE bug fix: closed an infinite loop possibility when ANSWER passed in as < 0 to a file-based tree. 2. --- XTREE bug fix: hitting ESC from an editable cell was returning XTR'XROW=0 (as it would for a non-editable cell), instead of the proper cell row. 3. --- MX_FILEHOOK bug fix: file hooks set within an SBX were not persisting on return to the caller. 4. --- MX_FILEHOOK enhancement: New opcode HOOKOP_QRY (7) allows you to query a file hook by its fileid or filespec. If found, the status will be >= 0 and all of the remaining fields will be returned. Add a new param, ENABLED (numeric), which returns 0 or 1 to indicated if the hook is disabled or enabled. XCALL MIAMEX,MX_FILEHOOK,OP,STATUS,FILE$,FID,HANDLER$,EVENTS,FLAGS,ENABLED A new sample/utility program QRYHOOKS.BP[908,50] has been added to the SOSLIB: to demonstrate querying the file hook table. ========================================================================== A-Shell Development Notes Version 5.1.1174.3 (21 January 2010) ========================================================================== 1. --- Windows passthrough /raw printing fix: close a loophole in which some character conversions were still being done, even when DATATYPE = RAW, leading to corruption of PCL graphics. NOTE: Setting PASSTHROUGH = ON for PCL documents containing binary data is not sufficient; you must also set DATATYPE = RAW (in the printer init file). ========================================================================== A-Shell Development Notes Version 5.1.1174.2 (20 January 2010) ========================================================================== 1. --- Misc bug and improvements to the file hook scheme (see 1174.0 below). Implement the hook events for READ, KILL and SORT. ========================================================================== A-Shell Development Notes Version 5.1.1174.1 (20 January 2010) ========================================================================== 1. --- XTREE enhancement: XTF_UP and XTF2_DOWN now work from within editable cells. 2. --- XTREE enhancement: ScrollMode=Tree now affects the operation of XTF_UP and XTF2_DOWN ========================================================================== A-Shell Development Notes Version 5.1.1174.0 (20 January 2010) ========================================================================== 1. --- New file hook mechanism (early beta release) allows you to establish file "hooks" on specific files and file events. The "hook" is an SBX which is called automatically by A-Shell when the specified event occurs on the file. The SBX may then output auditing information, check for anomalies, enforce rules, export data, essentially whatever it likes. To establish a hook on a file: ++include ashinc:ashell.def ++include ashinc:hook.def XCALL MIAMEX, MX_FILEHOOK, OP, STATUS, FILE$ {,FID, HANDLER$, EVENTS, FLAGS} MX_FILEHOOK is defined as 178 (in ashell.def) OP [num, in] may be one of the following (defined in hook.def): HOOKOP_DISABLE (0) ! disable one (or all) hooks HOOKUP_ENABLE (1) ! re-enable one (or all) hooks HOOKUP_ADD (2) ! add a new hook HOOKOP_DEL (3) ! delete a hook HOOKOP_APPEVENT (6) ! call the hook to process an app-defined event STATUS [signed num, out] returns status code: >=0 = success -1 = unable to allocate memory for hook table -2 = illegal fspec (must be AMOS-style) -3 = invalid handler syntax -4 = fspec not found (OP 0,1,2,6) -5 = fid not found (OP 0,1,2,6) -6 = opcode not yet implemented -7 = illegal opcode FILE$ [string, in] is the specification of the file whose operations are to be hooke. (Only AMOS-compatible filespecs are currently suported.) Note that with OPs 0, 1 and 3, FILE$ may be "*" to perform the operation on all the hooks in the hook table. FID [num, in] is a unique integer identifier for the file, which will be used in any output files to reference the file (more compact than outputting the file spec each time.) HANDLER$ [string, in] depends on the OP. For OP 2 (add), it must specify the handler for the hook, using the following syntax: SBX:xxxxxx where xxxxxx is the name of an SBX file, which will be called to process the hook. (see "HOOK SBX SPECIFICATION" below for further details. Note that additional handler types (and corresponding syntax), such as a text file, FIFO, or TCP connection, may be defined later. For OP 6 (HOOKOP_APPEVENT), the HANDLER$ parameter may be used to pass an arbitrary string to the hook routine. Typically this may be used to include a message in the hook log file, such as "posting run complete". EVENTS [b4, in] is a bit-field of events to hook, from the following (defined in hook.def): define HFE_PRE_OPEN = &h00000001 ! prior to open define HFE_POST_OPEN = &h00000002 ! after open define HFE_PRE_CLOSE = &h00000004 ! prior to close define HFE_POST_CLOSE = &h00000008 ! after close define HFE_PRE_READ = &h00000010 ! prior to read or get (any) define HFE_POST_READ = &h00000020 ! after read or get (any) define HFE_PRE_READL = &h00000040 ! prior to readl or getl define HFE_POST_READL = &h00000080 ! after readl or getl define HFE_PRE_WRITE = &h00000100 ! prior to write (or update'record) define HFE_POST_WRITE = &h00000200 ! after write (or update'record) define HFE_PRE_WRITEL = &h00000400 ! prior to writel (or create'record) define HFE_POST_WRITEL = &h00000800 ! after writel (or create'record) define HFE_PRE_ALLOC = &h00002000 ! prior to allocate define HFE_POST_ALLOC = &h00004000 ! after allocate define HFE_PRE_KILL = &h00008000 ! prior to kill define HFE_POST_KILL = &h00010000 ! after kill define HFE_PRE_SORT = &h00020000 ! prior to allocate define HFE_POST_SORT = &h00040000 ! after allocate define HFE_APP_EVENT1 = &h10000000 ! custom application event FLAGS [b4, in] is a bit-field of flags which are passed to the hook routine (as a clue to how the hook should operate, and/or which are used by A-Shell to modify the operation of the hook (from hook.def): define HFF_PROG = &h00000001 ! include program name define HFF_SBX = &h00000002 ! include sbx name define HFF_DATA = &h00000004 ! include data (for WRITE hook) define HFF_DATA_WAS = &h00000008 ! include data (prior to write (POST_WRITE only) define HFF_RECNO = &h00000010 ! include recno define HFF_TIME = &h00000020 ! include time define HFF_DATE = &h00000040 ! include date define HFF_USER = &h00000080 ! include user name define HFF_PID = &h00000100 ! include process id define HFF_AUTO_DEL = &h00001000 ! auto delete hook on prog exit HOOK SBX SPECIFICATION: The SBX you specify to handle the hook will be called automatically by A-Shell for the specified events, as follows: XCALL , STS, ENVELOPE, REC, PRE'REC STS [out, num] will return 0 for ok. Any odd value returned from a HFE_PRE_xxx event will cause A-Shell to skip the event. (This allows you to completely replace the file operation originally programmed, with one of your own.) ENVELOPE [in, structure] is a structure containing the following information (defined in hook.def): DEFSTRUCT ST_HOOK_ENV ! information passed to hook routine map2 event,b,4 ! event code (see HPE_xxxx flags) map2 flags,b,4 ! event processing flags (see HFF_xxx) map2 fileid,b,4 ! unique file id # map2 recno,f,8 ! rec # map2 pid,b,4 ! process id map2 recsiz,b,4 ! record size map2 mode,b,4 ! mode (depends on event) map2 prog,s,16 ! program name map2 sbx,s,16 ! sbx name (if appl) map2 user,s,24 ! user name ENDSTRUCT REC [in, s or x] contains data relative to the event. For the HFE_POST_READx and HFE_xxxx_WRITEx events, it will contain the record data which was just read or which is to be (or was just) written. For the OPEN, ALLOC and KILL events, it will contain the filespec (in native format). For the APPEVENT event, it will contain the contents of the HANDLER$ parameter passed to the MX_FILEHOOK call. For other events, it may be undefined. PRE'REC [in, x] is only used with the HFE_POST_WRITE event, when the HFF_DATA_WAS flag is set, in which case it will contain the previous contents of the record (immediately prior to being written). Warning: the "previous contents" will be null if the previously read record number is not the same one being written. (A better way to handle that situation may come later.) A sample hook (FSHOOK1) and sample program (FHOOKTST1) can be found in [908,50] of the SOSLIB. WARNING/REMINDER: The details and specs of the file hook mechanism are subject to change in the near future, so should be used only experimentally for now. ========================================================================== A-Shell Development Notes Version 5.1.1173.5 (19 January 2010) ========================================================================== 1. --- (Linux only) Fix TCPX problem in which it complained of not being able to load libashtls. (This was due to some not-ready-for-prime-time code attempting to support Transport Layer Security, i.e. TLS, within TCPX.) 2. --- APEX bug fix: Settings > Preview Preferences was crashing A-Shell. ========================================================================== A-Shell Development Notes Version 5.1.1173.4 (15 January 2010) ========================================================================== 1. --- Fix a couple of additional bugs relating to MX_GDICALC (also introduced around 1166.6). ========================================================================== A-Shell Development Notes Version 5.1.1173.2 (15 January 2010) ========================================================================== 1. --- Dynamic variable bug fix: Passing an uninitialized dynamic string to a function, procedure or SBX was generating a protection fault. (Problem was introduced around 1166.6) ========================================================================== A-Shell Development Notes Version 5.1.1173.1 (14 January 2010) ========================================================================== 1. --- Compiler (edit 447) and runtime enhancement: new statement: XGETARGSBX , XGETARGSBX is to XGETARG as XPUTARGSBX (see below) is to XPUTARG. ========================================================================== A-Shell Development Notes Version 5.1.1173.0 (14 January 2010) ========================================================================== 1. --- Compiler (edit 446) and runtime enhancement: new statement: XPUTARGSBX , Acts just like XPUTARG except that it references in the current SBX context, even if it occurs inside a function or procedure. XPUTARG continues to act as before, referencing the function or procedure argument if inside a function or procedure, else the SBX argument if not. Note that using XPUTARGSBX in a program will set the "5.1 extensions" flag in the header, which will can be seen by VERSYS, and which will cause a runtime error in versions of A-Shell prior to 1160, but it will not provide any warning in versions 1160-1172. (In those versions, the runtime system will generate an illegal syntax code when hitting such a statement.) ========================================================================== A-Shell Development Notes Version 5.1.1172.0 (13 January 2010) ========================================================================== 1. --- New OpenSSH transport option. This only affects ATE directly, but it involves introduction of a new DLL (ASHNET2.DLL) and a modification to the interface of the ASHNET.DLL (which should all be updated at the same time.) It isn't yet clear what the advantages or disadvantages of this implementation are, but the motivation for including it are: a. As a possible solution to a rare but annoying problem in the existing SSH implementation (based on libraries licensed from Chilkat) in which the session disconnects spontaneously. b. The new implementation is cross-platform, opening the door to possibly support SSH-based capabilities (a new SFTP perhaps?) under A-Shell/UNIX. ========================================================================== A-Shell Development Notes Version 5.1.1171.5 (13 January 2010) ========================================================================== 1. --- Windows printing bug fix: After faxing, subsequent non-fax print requests were subject to getting spurious "Invalid Handle" errors. 2. --- Internal Windows-relate bug fix: Close a loophole in which a control-c status at the start of messagebox display operation could cause an infinite loop (with no messagebox displayed). 3. --- Compiler bug fix (edit 445): ++PRAGMA FORCE_FSPEC was sometimes failing to convert %s to the program filename, resulting in an output file with no filename. 4. --- Internal improvement: processing of language-specific message files (e.g. SBRMSG.xxx) is now more efficient than before (improved cacheing). 5. ---- Various internal changes related to ASHNET.DLL and ASHNET2.DLL in preparation for supporting an alternate SSH implementation (but which are not ready to use, so this update should NOT be used with ATE!). 6. --- XTREE enhancement: Two new flags: XTF2_PGUPDN (&h00000040) Enable PgUp/PgDn (exitcodes 4, 6) XTF2_DOWN (&h00000080) Enable Ctrl+Down on last row (exitcode -43) ========================================================================== A-Shell Development Notes Version 5.1.1171.2 (08 January 2010) ========================================================================== 1. --- GUI refinement: hot tracking (introduced in 5.1.1170) now applies to static and button controls that have MBF_SHLEXC, MBF_CMDLIN, or MBF_DLL (previously was just MBF_KBD). 2. --- GUI refinement: MBF_SHLEXC, MBF_CMDLIN, and MBF_DLL now have precedence over MBF_KBD. (MBF_KBD is ignored if any of the others are set.) This is not technically a fix, since you should never use more than one of those options, but this refinement helps avoid a common application coding bug (including one in Leo). ========================================================================== A-Shell Development Notes Version 5.1.1171.1 (08 January 2010) ========================================================================== 1. --- Windows printing bug fix: Minor cleanup of passthrough logic to follow the proper sequence of formalities for starting/ending each page, and expand the TRACE LP to track this better. ========================================================================== A-Shell Development Notes Version 5.1.1171.0 (07 January 2010) ========================================================================== 1. --- (Internal) Begin internal modifications to support alternate SSH implementation. 2. --- Windows printing bug fix: Eliminate a scenario in which options from a print operation would carry over to affect a subsequent print operation. ========================================================================== A-Shell Development Notes Version 5.1.1170.2 (04 January 2010) ========================================================================== 1. --- COMIO.SBR refinements: A new status code -9 (unable to set comm parameters) has been added to distinguish when the open operation fails because of fundamental reasons (status -7) or because of an error while initializing the port (status -9). Also, the system error message (returned in the msg parameter) now begins with the actual Windows error code, making it easier to identify with precision. ========================================================================== A-Shell Development Notes Version 5.1.1170.1 (02 January 2010) ========================================================================== 1. --- APEX enhancement: add a font option (and darkness) to the Preview Preferences dialog. 2. --- EZ-SPOOL bug fix: Choosing a printer from the EZ-SPOOL printer menu whose init file contained PREVIEW=ON was not activating preview mode. (It was relying on the original switches and original printer init file only.) ========================================================================== A-Shell Development Notes Version 5.1.1170.0 (30 December 2009) ========================================================================== 1. --- AUI_CONTROL enhancement: switch cursor to a pointing finger when it is over a button or static text control with a click action ========================================================================== A-Shell Development Notes Version 5.1.1169.9 (29 December 2009) ========================================================================== 1. --- Experimental AUI_CONTROL feature: setting the &h020000 bit in the CTYPE2 parameter of a MBF_STATIC control will cause the control to display a "button-like" border when the mouse is over it (i.e. hot tracking). This could be useful with MBF_STATIC controls that have click actions, but the implementation is likely to change, so don't do more than experiment with this. 2. --- XPUTARG / Dynamic String bug fix: XPUTARG was failing to clear the target variable (i.e. the calling param) when the source variable (the one being returned or "put") was an uninitialized dynamic string. Such stings have a size of 0, causing the transfer routine to transfer 0 bytes, which could have resulted in the calling routine mistakingly interpreting the parameter as having been returned from the last SBX or func/proc call rather than from the previous value of that parameter. ========================================================================== A-Shell Development Notes Version 5.1.1169.8 (28 December 2009) ========================================================================== 1. --- AUI_MENU bug fix: automatic deletion of child menu items was not working when a top-level parent menu with no itemid was deleted. ========================================================================== A-Shell Development Notes Version 5.1.1169.7 (27 December 2009) ========================================================================== 1. --- Compiler enhancement: instances of named structures can now be overlayed. For example: MAP1 REC,X,64 MAP1 CUS,ST_CUS,@REC MAP1 VEN,ST_VEN,@REC This was always possible with unnamed structures, so the technique is not new. Put previously, the compiler would have complained when used with named structures as in the example above. 2. --- EVENTWAIT bug fix: the fix in 1166.6 relating to EVW_NOFOCUS was causing the DEL key to no longer exit with exitcode -47. ========================================================================== A-Shell Development Notes Version 5.1.1169.6 (23 December 2009) ========================================================================== 1. --- GUI display fix: the background of static icons within a TAB control was displaying in black instead of transparent. 2. --- Static text controls with the FGC (foreground color) set to an RGB value and the BGC value set to -2 were sometimes getting an unexpected backround color. ========================================================================== A-Shell Development Notes Version 5.1.1169.5 (23 December 2009) ========================================================================== 1. --- INFLD dynamic variable fix: when using a dynamic ENTRY variable, MAXCHARS was being effectively limited to the larger of XMAX and the existing entry variable contents. (Generally noticed as horizontal scrolling not working.) 2. --- Windows printing bug fix: the DELETE switch was not being obeyed in one particular set of circumstances involving APEX and ATE. 3. --- XTREE bug fix: Close a loophole in which ANSWER was being returned > 0 in the case where XTF_NOSEL was set (i.e. display only), but the incoming XTR'XROW field was > 0. This wasn't exactly a bug, but it started happening in 1169.0, and caused some applications to misinterpret the ANSWER>0 as indicating a selection operation. 4. --- INPUT bug fix: regular (non CSV) INPUT statements were failing to stop at the comma delimiters when the preceding field was quoted. (Problem introduced between 1163.0 and 1164.0 in the process of fixing INPUT CSV.) ========================================================================== A-Shell Development Notes Version 5.1.1169.4 (22 December 2009) ========================================================================== 1. --- Windows printing bug fix: close another loophole causing A-Shell to crash when the printer specified in the DEVICE= statement doesn't exist. (This problem introduced in 1169.2 while fixing a similar problem.) ========================================================================== A-Shell Development Notes Version 5.1.1169.3 (22 December 2009) ========================================================================== 1. --- Beveling bug fix: enabling 'beveling' and standard line drawing characters was leading to visual chaos, at best. Why anyone would want both is beyond the scope of this discussion, but if both options are enabled, you now get something more visually pleasing (similar to a double line with shading). ========================================================================== A-Shell Development Notes Version 5.1.1169.2 (21 December 2009) ========================================================================== 1. --- Windows printing bug fix: close a loophole leading to an infinite loop when the last user printer no longer exists and other conditions met. 2. --- Windows printing bug fix: in some cases, printing to the PROMPT: device was bypassing the print dialog and printing directly to the last used printer. 3. --- Windows printing refinement: When attempting to match the requested printer from the printer init DEVICE statement against the available printers, the function which scanned the available printers was actually trying to open each one, which can lead to long delays in cases where printers are technically available, but unresponsive (or very slow to respond). To avoid this, we now use an alternate scan that only checks the local registry and thus is fast, but which can only compare printer names, not ports. (Since 99% of the time, the printer is identified by name rather than port, this limitation should not pose a significant problem. And in any case, if we fail to achieve a match on printer names, we revert to the previous method.) ========================================================================== A-Shell Development Notes Version 5.1.1169.1 (19 December 2009) ========================================================================== 1. --- VUE bug fix: A source line > 2022 characters containing TABs would crash VUE when you moved the cursor off the line. 2. --- SYSTAT.LIT 3.0(161) enhancement: new /H switch displays available disk space in "human-readable" units (GB or MB) rather than 'blocks'. Also, even without /H, the display format is automatically widened, but only if necessary, to prevent numeric overflow of the available disk blocks (more than 999,999,999 blocks). 3. --- DIR.LIT 3.0(148) bug fix: file names incompatible with AMOS file.ext format (e.g. with more than one extension) were being omitted from the output when the output was being sent to a file, even if /NA was specified. (This is normal when /NA is not specified). The problem only occurred when /NA was at the end of the wildcard list (rather than immediately following 'DIR'. (DIR/NA out.list=*.* was ok, but DIR out.lst=*.*/NA was not.) ========================================================================== A-Shell Development Notes Version 5.1.1169.0 (16 December 2009) ========================================================================== 1. --- XTREE bug fix: The patch in 1168.7 to support ANSWER > 32K had the side effect of returning ANSWER=1 (instead of 0) after an XTREE display using XTF_NOSEL. This was causing some applications to misinterpret the returned ANSWER value, as if the user had selected it, generally leading to chaos. Now fixed. 2. --- XTREE refinement: Displaying a multi-level tree with one or more levels collapsed was sometimes causing a "flash" as the expanded rows were first displayed and then collapsed. 3. --- XTREE bug fix: Optimization logic in 1166.3 was in some cases leading to an infinite loop on the initial load of a tree. ========================================================================== A-Shell Development Notes Version 5.1.1168.9 (14 December 2009) ========================================================================== 1. --- APEX bug fix: eliminate confusion in the way the default printer is selected by combining the "prompt dialog default" with the "preview default" while within APEX. ========================================================================== A-Shell Development Notes Version 5.1.1168.8 (13 December 2009) ========================================================================== 1. --- XTREE bug fix: Self-service combos stopped working in 1166.6. 2. --- Close longstanding crash possibility in large mode sort. ========================================================================== A-Shell Development Notes Version 5.1.1168.7 (13 December 2009) ========================================================================== 1. --- INFLD / dynamic variable bug fix: preload wasn't working with dynamic variables unless the existing size of the variable was >= XMAX. (Expanding the variable to accommodate XMAX was clearing it.) 2. --- XTREE bug fix: The returned row # and data in simple selection trees was not working beyond 32K, due to sharing an internal legacy variable with INMEMO (EXTROW). Note that the 32K limit remains for the non-GUI version of PCKLST. Also note that this requires an update on both the server and client sides (for ATE). ========================================================================== A-Shell Development Notes Version 5.1.1168.6 (11 December 2009) ========================================================================== 1. --- GDI printing enhancement: The width parameter in the //SETFONT command may now be used to specify the character width in terms of the number of characters that would fit on a line, by setting it to the negative of that value. For example, to select a font that would fit 90 characters across the page, set the width parameter to -90. 2. --- APEX bug fix: The font calculated based on the auto pitch feature was not always taking into account the hardware offsets on the printer, (depending on the sequence of previewing events), leading to excessive discrepancy between the size of the font used in the preview window vs. that used in the actual output. 3. --- XTREE bug fix: Certain tree configurations where either failing to load entirely (while sucking up CPU and memory resources) or would take a long time to load. ========================================================================== A-Shell Development Notes Version 5.1.1168.5 (10 December 2009) ========================================================================== 1. --- APEX and GDI Printing bug fixes: - STRIPFF was not working completely. APEX was stripping the leading CR but counting it in the page count, and printing from APEX was typically causing the blank leading page to come back. - After printing from APEX with a page range, a second print operation would use the same page range even if no page range selected. - When DEVICE = PROMPT:, APEX is supposed to use as its default the last printer used for APEX purposes, but it was in many cases reverting to the overall Windows default printer. - Attempt to preserve printer INI settings even when selecting a different printer from APEX. ========================================================================== A-Shell Development Notes Version 5.1.1168.4 (10 December 2009) ========================================================================== 1. --- XTREE bug fix: the optimization logic in 1166.3 was failing to work properly (sometimes resulting in a much slower overall load time) in editable trees and especially multi-level ones when the initial targetrow was 0 (as it usually is). ========================================================================== A-Shell Development Notes Version 5.1.1168.3 (9 December 2009) ========================================================================== 1. --- Compiler (edit 443) - fix spurious "REPEAT/EXIT outside of loop" error when the REPEAT or EXIT occurred inside a FOR ... loop which immediately followed a MAP statement. 2. --- Command line enhancement: command line history buffer (^R, ^T) expanded from 10 to 25 lines. 3. --- GDI printing refinement: "*" is now treated as equivalent to "AUTO" in the CPP= statement of the printer init file. For whatever reason, this was apparently a common mistake or misunderstanding, aggravated by the fact that anything other than "AUTO" or a number was effectively treated as 132 (making CPP=80,*) appear to work, until you tried a file with more than 132 columns. In addition to recognizing "*", essentially anything non-numeric now results in the equivalent of AUTO. 4. --- APEX refinement: The "print as intended" toolbar button is no longer disabled when the originally specified printer was PROMPT:. (The theory was that "print as intended" was entirely ambiguous, but the resulting confusion was more trouble than the ambiguity.) 5. --- APEX bug fix: When printing from with APEX, the default pitch was being set to 80,132 rather than 80,AUTO, resulting in the printed output being scaled differently than the preview indicated. ========================================================================== A-Shell Development Notes Version 5.1.1168.2 (7 December 2009) ========================================================================== 1. --- INPUT CSV bug fix: 1167.2 fix was causing a field consisting only of "" to be returned as ". Also, a delimiter following a "" was being treated as a raw character, even when there was no active opening quote on the field. ========================================================================== A-Shell Development Notes Version 5.1.1168.1 (7 December 2009) ========================================================================== 1. --- GDI printing behavior rollback: As of 5.1.1163.0, an internal routine responsible for removing quotes from strings was upgraded to not remove unbalanced quotes, but this was apparently causing some quote-challenged people problems in the //TEXTxxx GDI directives. So the pre-1163 behavior is now restored (meaning that //TEXTOUT,1,2,"abc will print as abc rather than as "abc). ========================================================================== A-Shell Development Notes Version 5.1.1168.0 (6 December 2009) ========================================================================== 1. --- COMIO.SBR enhancement: In addition to the existing OPCODE 8 (read) special COUNT values of 0 (read to LF) and -1 (read to CR), you may now specify any character value for the terminating character to read to, by putting its negative ASCII value (-2 thru -257) in COUNT. For example, COUNT = -3 ! read to ETX or chr(3) xcall COMIO, 4, CH, BUF, STATUS, COUNT Since -1 is interpreted as chr(10) (LF), to specify chr(1) (SOH) as the terminating character, set COUNT = -257. To read up until a explicit null byte, set COUNT = -256. Note that this requires that we receive a explicit null byte in the input buffer, not to be confused with the implicit null byte used to terminate the buffer. Consistent with previous operation, the terminating byte is discarded, although it is included in the returned COUNT (indicating the number of characters received). And in the case of COUNT = 0 (wait for LF), if the character preceding the LF is CR, the CR is also discarded. (The previous documentation described this option as waiting for CRLF, but in reality, it has always terminated on LF, with the preceding CR being optional.) 2. --- TRACE LP refinement: SET TRACE LP wasn't displaying the "Comparing..." messages (showing how the specified printer device is being matched up to the available ones) in the case of ATSD connections. (They were appearing in the ashlog.log instead.) Now they appear in the ATE debug message window (if the client is ATE), else in the main window. ========================================================================== A-Shell Development Notes Version 5.1.1167.7 (5 December 2009) ========================================================================== 1. --- APEX/PDFX bug fix: PDFX license was being lost when printing to PDFX from APEX (causing the demo-mode stamps to appear on the output.) 2. --- APEX bug fixes: - Some dialogs displayed by APEX (like printer selection) were causing the APEX window to be repositioned behind the original main window. - Scaling of output generated from the APEX print dialog was not matching scaling of output generated directly. ========================================================================== A-Shell Development Notes Version 5.1.1167.6 (4 December 2009) ========================================================================== 1. --- Windows 7-bit charset bug fix: virtual key sequences (e.g. VK_F###, VK_xF###, chr(7)+chr(250)+...) were not working in 7-bit mode. 2. --- XTREE bug fix: the 1167.5 patch was causing the answer array to not be returned when the editable tree was exited with ESC. ========================================================================== A-Shell Development Notes Version 5.1.1167.5 (3 December 2009) ========================================================================== 1. --- MX_EXPFIL enhnancement: you may now use this funtion to reduce the size of a file by specifying a negative value for the addrecs parameter: xcall MIAMEX, MX_EXPFIL, ch, addrecs, status Note that addrecs should be the number of LOGICAL records to add to the file (addrecs > 0) or subtract from the file (addrecs < 0). 2. --- XTREE refinement: exiting with ESCAPE was not update the saved column configuration. (This was previously reported incorrectly as having been fixed in 1127.2.) ========================================================================== A-Shell Development Notes Version 5.1.1167.4 (2 December 2009) ========================================================================== 1. --- APEX bug fix: The APEX printer dialog was offering the option of printing the current page or a range of pages, but in actuality it was printing the entire document. Those options are now properly supported. ========================================================================== A-Shell Development Notes Version 5.1.1167.3 (2 December 2009) ========================================================================== 1. --- XTREE bug fix: The column width save/restore feature (XTUCFG_WIDTH) was only working up to the first hidden column. (It was broken in 1164.6) ========================================================================== A-Shell Development Notes Version 5.1.1167.2 (1 December 2009) ========================================================================== 1. --- Windows font selection bug fix: Previously it was not possible to switch to the MIAME Terminal font using the font dialog if miame.ini FONT= statement specified the ANSI character set. (The problem here is that MIAME Terminal does not support the ANSI character set, and in the font selection rule hierarchy, character set is more important than face name. So requesting MIAME Terminal was typically resulting in Courier New, which does support ANSI.) This problem has now been fixed by detecting the choice of MIAME Terminal and switching to the OEM character set. This in turn allows ATE users to easily override the default font (Lucida Console, ANSI) by changing to MIAME Terminal and then using the File > Save Settings option. 2. --- INPUT CSV bug fixes: - last field on line was not being de-quoted - "" (literal quote pairs) were not always acting like raw characters when at the start or end of a field. (That is, sometimes they were being removed as if they were part of the standard field quoting.) 3. --- MX_KILL and MX_ZAPQUEUE now leave entries in ashlog.log. 4. --- APEX bug fix: display mode was inappropriately reverting to multi-page (typically making the page very small) whenever returning from the APEX print or print setup dialogs. ========================================================================== A-Shell Development Notes Version 5.1.1167.1 (25 November 2009) ========================================================================== 1. --- GUI display bug fix: dialog grid scale factors were incorrectly being applied to the main window. ========================================================================== A-Shell Development Notes Version 5.1.1167.0 (24 November 2009) ========================================================================== 1. --- Windows printing bug fix: when a print filter changed the printer name or switches, it was causing an infinite loop. 2. --- Cleanup some leftover issues from the removal of the limits on menu items and controls (see 5.1.1166.6). Menu items beyond 400 were not responding to click events, and in some cases controls beyond 600 were not behaving properly. ========================================================================== A-Shell Development Notes Version 5.1.1166.9 (23 November 2009) ========================================================================== 1. --- INFLD GUI bug fix: INFLD controls stopped working properly in 1166.6 ========================================================================== A-Shell Development Notes Version 5.1.1166.8 (22 November 2009) ========================================================================== 1. --- XTREE enhancement: expand the table of RGB color definitions (RGBbg=, RGBfg=) from 26 to 52 (A-Z, a-z). ========================================================================== A-Shell Development Notes Version 5.1.1166.7 (21 November 2009) ========================================================================== 1. --- AUI_EVENTWAIT bug fix: EVW_NUMERIC was not working (was returning 0 rather than the value keyed in). ========================================================================== A-Shell Development Notes Version 5.1.1166.6 (21 November 2009) ========================================================================== 1. --- EZVUE refinement: the cursor state (shape and blink option) is now saved and restored. Previously on exit from EZVUE, blink was turned off. 2. --- AUI_MENU enhancement: remove limit of 250 menu items. The menu table now expands automatically as needed. 3. --- AUI_CONTROL enhancement: remove limit of 600 controls. The control table now expands as needed (and starts out much smaller, freeing up about 500K of Windows heap memory for programs using less than 100 controls). 4. --- AUI_EVENTWAIT bug fix: eliminate problem where it was intermittently returning exitcode 99 (error) when called with EVW_NOFOCUS. (It was trying to validate the parentid/controlid parameters before noting that it doesn't matter when EVW_NOFOCUS is specified.) ========================================================================== A-Shell Development Notes Version 5.1.1166.5 (20 November 2009) ========================================================================== 1. --- XGETARG / XPUTARG bug fix: passing a F,6 variable to an XCALL expecting to receive an X variable, and vice versa, wasn't doing a raw copy. (Thus if the X variable was overlayed by an F,6 the resulting value wasn't matching the passed value). 2. --- XPUTARG refinement: passing an F,6 variable when the caller was expecting an S was resulting in the correct value, but wasn't formatted in the same way you would expect when assigning an F to an S (typically unneeded trailing zeroes or the wrong significance). (Same refinement as in 1164.4, but in a different context.) ========================================================================== A-Shell Development Notes Version 5.1.1166.4 (18 November 2009) ========================================================================== 1. --- XTREE refinement: minor optimization in the initial display logic, eliminating a "flash" caused by double-drawing. ========================================================================== A-Shell Development Notes Version 5.1.1166.3 (17 November 2009) ========================================================================== 1. --- XTREE refinement: close a further CPU bottleneck during the initial load of a large tree. (Shaved about 90% off the load time for a sample tree with 6000 items and 25 columns.) 2. --- TPRINT/DPRINT bug fix: fix further problem with main window transparency. ========================================================================== A-Shell Development Notes Version 5.1.1166.1 (16 November 2009) ========================================================================== 1. --- XTREE refinement: close a CPU bottleneck in pre-processing XTREE array data (server side in case of ATE) when the rows don't have trailing nulls. 2. --- TPRINT/DPRINT bug fix: refinement described under 1166 below weren't working for main windows. ========================================================================== A-Shell Development Notes Version 5.1.1166.0 (16 November 2009) ========================================================================== 1. --- MBF_STATIC refinement: the default BGC value of -2 (NUL_BGC) is now taken to mean transparent, rather than "theme background". 99% of the time this is what people wanted, but when the parent window background color did not match the expected static text theme background (gray), you ended up with unwanted gray backgrounds for your static text. 2. --- TPRINT/DPRINT refinements: these now appear with transparent backgrounds rather than the standard theme (gray) background. See previous item above. Note that in the ATE environment, updating either the server or the client should be sufficient for this enhancement to take effect in most windows, but to work in dialogs and tab controls with explicit RGB colors, you will need to update both the client and server side. (Updating just one will probably retain the status quo.) Also note that you may now force TPRINT/DPRINT to override the default color scheme by first using TAB(-2,x+64) and/or TAB(-3,x+64) to establish default foreground/background colors. (This is consistent with the rule used by MBF_STATIC to decide whether to overide the theme colors. Note, however, that this effect is controlled on the server side for ATE. 3. --- Floating point rounding refinement in VAL(), INT(), FIX(), and USING: Normally, in order to more closely mimic the floating point rounding idiosyncrasies of AMOS, A-Shell converts floating point values to 48 bit within the above mentioned functions, which is fairly effective at eliminating deviations between AMOS and A-Shell when floating point numbers are not carefully rounded at the application level. But, it no longer does this for values larger than 99,999,999,999 since they cannot be stored in 48 bit floating point format without losing part of the integer value. (Note, however, that this only extends the useful maximum number from 11 digits to about 16, since after that even 64 bit floating point won't be able to hold them.) 4. --- Line drawing character bug fix: tab(-1,52)/tab(-1,53) (double horizontal and double vertical lines) were displaying as some kind of garbage characters when not in OEM font mode. Now, they are converted to the single line equivalent when using the ANSI character set and not beveling (because the ANSI character set does not have these symbols). In beveling mode, they are emulated in a way consistent with the other beveled line characters. 5. --- VUE refinement (or fix?) - cursor is now forced on in VUE edit mode. (It's very hard to edit without a visible cursor. The problem may have been introduced recently, since it was never before reported.) ========================================================================== A-Shell Development Notes Version 5.1.1165.1 (10 November 2009) ========================================================================== 1. --- GDI Printing bug fix: the print init command ORIENTATION = LANDSCAPE was broken in 1160.4 ========================================================================= A-Shell Development Notes Version 5.1.1165.0 (05 November 2009) ========================================================================== 1. --- GDI printing refinement: The old printer init command DATATYPE = RAW (in conjunction with PASSTHROUGH mode) now prevents A-Shell from doing any special processing relating to the CR, LF, and FF control characters. This may be necessary in order to embed raw graphics into print files, as may be needed with certain EPF (e.g. Zebra label printer) and PCL protocols. Otherwise, even though PASSTHROUGH mode sounds like it "passes everything through", in reality, you still get conversion of isolated LF into CRLF, and it still identifies page breaks by FF (i.e. chr(12)), calling a standard GDI printing routine to inform the printer of the start of a page. The LF to CRLF conversion would obviously alter any graphic image, and the page break call may have had unknown results, depending on the driver. Doc note (to Ty): We need to completely rewrite the existing DATATYPE topic in the Setup Guide. Remind me of that later. 2. --- TPRINT/DPRINT refinement: The background color (taken from the last TAB(-3,x) command) was not working in theme environments. That is, the standard theme background (typically gray) was being used. Now it works as expected. (Note: for ATE, server side must be updated.) ========================================================================== A-Shell Development Notes Version 5.1.1164.9 (04 November 2009) ========================================================================== 1. --- Dialog centering refinement: when centering a dialog with MBF_DLGNOCREEP and without MBF_DLGNOPARENT, base the centering on the main window rather than on the dialog's real parent. ========================================================================== A-Shell Development Notes Version 5.1.1164.8 (03 November 2009) ========================================================================== 1. --- AUI_CONTROL bug fixes relating to dialog centering - - Dialogs with desktop as parent (MBF_DLGNOPARENT) were not getting centered at all unless the main window was on the main monitor. - When a dialog was being centered on the main window or another dialog, it was coming out slightly to the left (by the width of the borders), and somewhat too high (by an amount related to the difference between the height of the combined caption/menu bar/status bar and bottom status bar, if applicable. ========================================================================== A-Shell Development Notes Version 5.1.1164.7 (02 November 2009) ========================================================================== 1. --- MSGBOX.SBR refinement: MBMISC_DEFLT2 and MBMISC_DEFLT3 flags (to select the default button) are now supported in text mode. (Previously text mode always selected the first button.) Also, the Windows version now uses the LDF to get the button labels (the UNIX version has done this for a long time). 2. --- XTREE refinement: Adding the H (hidden) flag to a column now overrides the saved column widths. (Previously, unless you also set the cwidth to 0, the column would reappear as previously saved.) ========================================================================== A-Shell Development Notes Version 5.1.1164.6 (30 October 2009) ========================================================================== 1. --- ISMUTIL VERIFY operation now outputs information to ashlog.log on errors. (On the screen, it only shows the type of error without any helpful details.) ========================================================================== A-Shell Development Notes Version 5.1.1164.5 (29 October 2009) ========================================================================== 1. --- XTREE refinement: Adding the H (hidden) cformat code to an otherwise visible column with a non-zero size wasn't always making the column disappear. (Settings its cwidth=0 worked, but just adding H should have been sufficient.) 2. --- MX_BROWSEFOLDER and MX_GETOFD refinement: If the initial path or directory is in the form of a drive letter and colon, with no trailing slash (e.g. "C:"), automatically append "\" to avoid confusion. (Such ambiguous specs are otherwise likely to be misinterpreted by A-Shell and/or Windows.) ========================================================================== A-Shell Development Notes Version 5.1.1164.4 (28 October 2009) ========================================================================== 1. --- XGETARG / XPUTARG refinement: The fix in 1160.0 to preserve the fractional value of a floating point expression converted to string during parameter passing was resulting in a trailing ".0" when integer floating point values were converted to string. (e.g. 1 was converted to "1.0") This was causing side effects in routines that were treating the resulting string as a literal key of some kind (INIX.SBX being one example). Now, the string result is stripped of the trailing ".0". 2. --- INMEMO refinement: For applications still using INMEMO in an otherwise GUI environment, to make it slightly more Windows-friendly, putting "|K" in your INFDEF string (via SBR=INFDEF:|K, or SET INFDEF, or MIAMEX,MX_INFDEF), will now cause the following changes: - Control+A selects the entire memo. - DEL (immediately after Control+A) will clear the memo. (Any other keyboard operation except Control+C just unselects the memo and then responds as it would otherwise.) - Control+C copies the selected text to the clipboard. (This works for both the entire memo selected by Control+A, and also for any other inmemo text selected with the mouse.) - Control+V pastes the clipboard text into the memo. - ESC will prompt whether to save changes, discard or cancel. (Since the normal abort key, Control+C, has a different meaning in |K mode, ESC has to serve for both updating and aborting.) The text of the messagebox that appears is the same as that used by XTEXT and is defined in SBRMSG.xxx as message 023,001. 3. --- INFLD GUI refinement: - Control+A now selects the field (same as Shift+End) - Alt+Backspace (as well as Control+Z) perform a primitive "undo". The first time it will restore the field to its state immediately prior to the last key (mainly useful if you accidentally selected the entire field and then deleted it). The second time, it will restore the original (starting) value of the field. 4. --- MBF2_STATICWIN controls may now be made clickable in the normal way (adding the MBF_KDB flag to ctype and putting a click string in the ccmd parameter). ========================================================================== A-Shell Development Notes Version 5.1.1164.3 (26 October 2009) ========================================================================== 1. --- Function / SBX nesting bug fix: The function level nesting counter (.NEST_LEVEL) was incorrectly getting reset at the start of an SBX call. This probably didn't matter to anyone until a recent refinement to dynamic memory management, when it caused memory corruption (reported as error 3) when a function pass dynamic variables to an SBX, which in turn called a function. 2. --- Correction to the Italian version of the Edit menu - the Paste option was listed as Taglia (cut) rather than Incolla. ========================================================================== A-Shell Development Notes Version 5.1.1164.2 (25 October 2009) ========================================================================== 1. --- Further AUI_EVENTWAIT refinement (to 1164.1) to fix a backwards compatibility problem in which EVW_EXCDINOUT stopped working in the main window and in the first event wait for a new dialog. Note that in order to put the focus on a clickable control at the start of a new dialog, you will need to remove EVW_EXCDINOUT to the first call. ========================================================================== A-Shell Development Notes Version 5.1.1164.1 (23 October 2009) ========================================================================== 1. --- XTREE bug fix: Control+HOME and Control+END were not working properly when in checkbox cells. 2. --- AUI_EVENTWAIT enhancement: it is now "smarter" about deciding when to ignore EVW_EXCDINOUT and when not to. Previously, it would ignore it (i.e. wait for another event) when either there had been a focus change to another dialog within the current A-Shell session since the last eventwait, or if in-coming exitcode was the same as the last outgoing exitcode. That handled the two most typical cases where you would want to wait for an event even if the in-coming exitcode identifies a clickable control: 1) on the first eventwait in a new dialog, and when returning to a dialog after handling another dialog. The problem which the previous scheme didn't handle was the case where you deliberately wanted to fire off the event associated with a clickable control after returning from some other dialog. The new logic keeps track of the last exitcode for each parent window, and only ignores the EVW_EXCDINOUT flag when the in-coming event is the same as the last out-going event. ========================================================================== A-Shell Development Notes Version 5.1.1164.0 (23 October 2009) ========================================================================== 1. --- AUI_CONTROL enhancement: A chr(13) character embedded in the text of a button (MBF_BUTTON) will now automatically enable multi-line mode (eliminating the need to remember to set MBF_WRAP at the same time). 2. --- MBF2_STATICWIN bug fix: In the initial implementation (1162) the flag was incorrectly being tested for in the ctype parameter rather the ctype2 parameter. 3. --- ATE server-based licensing improvements: Extend the timeout for the initial ATE handshake from 3 seconds to 8 seconds, in order to be more tolerant of connections with high latency or other intermittent pauses. 4. --- ATE enhancement: new pseudo-environment variable ATELICMODE supported in TAB(-10,AG_GETENV) to return a single decimal value containing flags indicating how the ATE workstation was licensed. The bottom 8 bits of the value are 0 if successfully licensed, else one of the LICF_xxx flags from ashinc:ashell.def. The next byte(s) contain one or more bit flags from ATELF_xxx: - ATELF_PROTO (&h0100) - Indicates that the ATE handshake was initiated, and also that the ATE client is at least 5.1.1164.0. (Prior to that, the TAB(-10,AG_GETENV);"ATELICMODE";chr(127) command will return an empty string. - ATELF_PC (&h0200) - Indicates that the ATE client has a local license. - ATELF_SRV1 (&h0400) - Indicates that the server attempted to pass the ATE license via the new streamlined protocol (1162+) - ATELF_SRV2 (&h0800) - Indicates that the server attempted to pass the ATE license via the LICENS/ATESRV mechanism. This also implies that the server is less than 5.1.1162.0 and/or that the passed license wasn't valid (in which case the lower byte should be <>0). - ATELF_AUX (&h1000) - Indicates that the server attempted to pass an auxiliary license to the client. (Will always be combined with ATELF_SRV2.) ========================================================================== A-Shell Development Notes Version 5.1.1163.2 (20 October 2009) ========================================================================== 1. --- INPUT CSV refinements to better handle cases involving unusual, non-standard, or mismatched quote syntax. Note that the AF_CSVSMARTQUOTE flag no longer does anything (and should be removed from the documentation.) AF_CSVNOQUOTE flag now stifles the automatic removal of the outer quotes surrounding a field. 2. --- Dynamic variable bug fix: assigning new value to a string variable that was previously 1 byte longer was sometimes failing to properly terminate the new value (leaving the last byte of the old value). 3. --- INPUT statement bug fix: the internal input buffer was getting corrupted during expansion to accomodate CSV fields longer than 4K. ========================================================================== A-Shell Development Notes Version 5.1.1163.1 (18 October 2009) ========================================================================== 1. --- XTREE date picker refinement: XTREE now parses the data in date cells based on the order of the day and month in the Format= clause, rather than on the local LDF setting. This should eliminate problems confusing and/or reversing the day and month when a date cell transitions between display and edit mode (since the transition requires that the cell's text contents be parsed into the sub-fields used by the date picker). ========================================================================== A-Shell Development Notes Version 5.1.1163.0 (16 October 2009) ========================================================================== 1. --- AUI_CONTROL enhancement: TAB controls may now be nested inside TAB controls. 2. --- STRTOK.SBR enhancement: new opcode flag +4 enables "CSV mode", which attempts to parse the source string as if it were comma separated (CSV) or TAB separated fields. This mode is similar to the existing quoted mode (+2), but with following differences: - While +2 mode recognizes quoted sub-fields anywhere within a field, +4 (CSV) mode only considers quotes as possible delimiters if the first non-blank character in the field is a quote. Any quotes which occur mid-field are treated as data characters. A subsequent quote will only be considered as the trailing quote of the field if it is followed by a field or record delimiter. - Leading and trailing spaces are removed from the returned field - Pairs of adjacent double-quote characters ("") are coalesced into single ones, i.e. 6"" Banana becomes 6" Banana. 3. --- INPUT CSV was crashing with some kinds of badly matched quote patterns. 4. --- XTREE bug fix: the editable date picker cell resizing logic may have gotten stuck in an infinite loop in cases where the optimum cell width caused a couple of pixels of the column to be outside the scroll window. 5. --- File allocation adjustment: When OPTIONS=BRKALC, it now outputs all brackets (]]]]]) to the file. Previously, it output "MIAME" after every 27 brackets. This was useful in some cases for visually confirming that the file was allocated by A-Shell, but undermined one of the purposes of filling a new file with brackets (to make unwritten records sort to the end). ========================================================================== A-Shell Development Notes Version 5.1.1162.2 (15 October 2009) ========================================================================== 1. --- XTREE date picker bug fix: date selection from the calendar using the mouse wasn't working; neither was ALT+DOWN to display the dropdown. ========================================================================== A-Shell Development Notes Version 5.1.1162.1 (14 October 2009) ========================================================================== 1. --- Windows sequential input file handler was treating chr(26) as EOF. ========================================================================== A-Shell Development Notes Version 5.1.1162.0 (13 October 2009) ========================================================================== 1. --- AUI_CONTROL enhancement: New ctype2 flag MBF2_STATICWIN creates a static child control window that looks something like a dialog box but can be used as a variation of a groupbox. 2. --- ATE licensing protocol enhancement: The protocol for passing the server's ATE license to the ATE client on A-Shell startup has been streamlined in the case where the server has a "system" ATE license (meaning that ATE is allowed on all client connections). The new protocol only has an effect when both the server and client are running 5.1.1164.0+, but does not interfere when either side is older. When in effect, the job is no longer forced to execute LICENS/ATESRV to issue the license, with eliminates a few handshaking steps, speeding up the login and possibly avoiding some problems with slow connections and typeahead during complicated startup sequences. 3. --- XTREE Enhancement: New advanced coldef clause Footer= allows you to specify a pager footer to be used when printing an XTREE through the print/preview mechanism. Syntax is like Title= clause (see 1160.8): Footer=Left Text Footer=Left Text|Right Text Footer=Left Text|Center Text|Right Text 4. --- VUE refinement: Detect and prevent attemmpt to view directory (within core vue module, not just within standalone VUE executable). ========================================================================== A-Shell Development Notes Version 5.1.1161.2 (12 October 2009) ========================================================================== 1. --- Dynamic memory enhancement: memory pools for SBXs and functions are now organized by nesting level, allowing all memory for levels N+ to be freed when returning from a level N call. This vastly reduces the amount of memory accumulation when the main program spends most of its time within a single top-level SBX or function that in turn makes heavy use of nested SBX/function calls and dynamic memory. 2. --- Dynamic memory bug fix: Close a loophole in the 1161.1 refinement that was allowing one string to spill over into the next when a fixed string with no trailing null was passed as a parameter to a routine receiving in into a dynamic string. 3. --- Dynamic memory bug fix: Remove spurious "out of memory" error caused by assigning a null value to a dynamic string during parameter passing. 4. --- MIAME.INI processing refinement: INCLUDE= was not translating pseudo- %ENV% variables (such as %MIAME%) that are known to A-Shell but not Windows. 5. --- AUI_CONTROL bug fix: The dialog class used for MBF_DLGNOPARENT and CMF2_DLGICON was inadvertently deleted in 1161.0. ========================================================================== A-Shell Development Notes Version 5.1.1161.1 (09 October 2009) ========================================================================== 1. --- Dynamic memory refinement: strings are now always stored with a trailing null. (Previously it was typical but not guaranteed.) The null avoids problems with some SBRs which pass string arguments to C API routines expecting trailing nulls. 2. --- XPUTARG/XGETARG refinement: When copying from a string source parameter to a dynamic X destination parameter, the X variable is now sized to match the logical (rather than the physical) size of the source string. This matches what happens in an assignment statement. ========================================================================== A-Shell Development Notes Version 5.1.1161.0 (09 October 2009) ========================================================================== 1. --- Runtime bug fix: RUN modules compiled with /AV/X:2 containing dynamic variables (which have the header flag F1F6 according to VERSYS) were not being recognized as valid by the program loader, resulting in "Incompatible run module". ========================================================================== A-Shell Development Notes Version 5.1.1160.9 (08 October 2009) ========================================================================== 1. --- Dynamic memory refinement: Previously, when an X variable was assigned a new value that was shorter than the previously allocated size, the variable size was not changed. That was a marginally useful optimization, but ended up conflicting with a more useful characteristic of dynamic X variables when they are concatenated together. Concatenation of dynamic X variables now acts like you would expect. ========================================================================== A-Shell Development Notes Version 5.1.1160.8 (06 October 2009) ========================================================================== 1. --- XTREE enhancement: Title= coldef clause now supports one or two "|" delimiters to separate it into Left|Center|Right. If no delimiters, the text is used as the right title, and the default left title is the date. If one delimiter, it is treated as Left|Right. ========================================================================== A-Shell Development Notes Version 5.1.1160.7 (06 October 2009) ========================================================================== 1. --- EMASCB.SBR bug fix: opening the file was generating intermittent spurious errors (like #17 "file exists"). ========================================================================== A-Shell Development Notes Version 5.1.1160.6 (06 October 2009) ========================================================================== 1. --- Server-side ATE refinement: close a loophole which was causing ATE to get stuck in keyboard lock mode after certain sequences of events. ========================================================================== A-Shell Development Notes Version 5.1.1160.5 (05 October 2009) ========================================================================== 1. --- XTREE bug fix: exiting from an editable cell with validation wasn't setting xtr'xvalidate when the exit was triggered by a function key or ESC/ENTESC. 2. --- ISAM 1.1 bug fix: In rare cases involving keys with more than 3 levels, a deletion was failing to update affected mid-level nodes, leading to keys that could be located by a sequential search but not by direct lookup. (This problem was actually introduced in 1142.4 in conjunction with a patch for a similar problem.) ========================================================================== A-Shell Development Notes Version 5.1.1160.4 (05 October 2009) ========================================================================== 1. --- Windows printing bug fix: SPOOL.SBR landscape switch (32768) stopped working in 5.1.1157 2. --- AUI_CONTROL enhancement: you may now override the background color of TAB controls, by the usual method of either specifying an RGB value or a palette number + 64. Note, however, that the background color does not affect the tab labels; it only affects the main part of the panel. (That may be desirable or undesirable, depending on your aesthetic viewpoint.) ========================================================================== A-Shell Development Notes Version 5.1.1160.3 (01 October 2009) ========================================================================== 1. --- XTREE print preview wasn't remembering the page layout or the printer saved from the previous print preview. ========================================================================== A-Shell Development Notes Version 5.1.1160.1 (30 September 2009) ========================================================================== 1. --- Faxing bug fix: eliminate two spurious error message dialogs during fax printing. (These started around 5.1.1158). ========================================================================== A-Shell Development Notes Version 5.1.1160.0 (28 September 2009) ========================================================================== [see Compatibility warning under 1159.9!] 1. --- Compiler refinement (edit 442) : COMPIL command line with no arguments now displays the internal compiler version. (Note that this is the version that matters; the version of COMPIL.LIT itself only relates to the wrapper, not to the compiler itself, which is internal to A-Shell) 2. --- Compiler refinement (edit 442) : ++EXTERN references to dynamic variables is now supported. Previously these would generate an error. For example: MAP1 DVAR,S,0 MAP1 VARY(15),S,0 .... Procedure MyProc() ++EXTERN DVAR ++EXTERN VARY() 3. --- Compiler refinement (edit 422) : Attempts to overlay dynamic variables are now flagged as incompatible overlay errors. 4. --- ASQL refinement: The connector interface (via XCALL SQL) has been modified to support dynamic variables. This will require new connectors with version 1.3 or higher. The 1.2 connectors are only compatible with A-Shell 5.1 versions PRIOR TO 1159. 5. --- XGETARG / XPUTARG bug fix: Conversions from floating point to string were resulting in loss of the fractional component of the original floating point value. 6. --- Dynamic variables bug fix: close an obscure GPF loophole. 7. --- XTREE Enhancement: ExitChars= are now operational from within checkbox and radio button cells. However, only the alphabetic, numeric and standard control characters are available in that context. (<, >, ?, =, :, and ; are not available). ========================================================================== A-Shell Development Notes Version 5.1.1159.9 (24 September 2009) ========================================================================== 1. --- COMPATIBILITY WARNING: Any program using dynamic variables which was compiled under 5.1.1159.x must be recompiled for 1160+!!!! To help enforce this, the RUN header flag indicating that the program contains dynamic variables has been changed, such that any such programs compiled under 5.1.1159 will abort immediately with "incompatible RUN format". 2. --- VERSYS.LIT 3.0(107) modified to support the new run header bit indicating that the program uses dynamic variables. It will now identify those programs compiled under 1159 as "5.1.1159 only", and newer ones as "5.1.1160+". 3. --- Refinements to the following subroutines to support returning data into dynamic variables (such that they expand as needed). Previously, the output data was being truncated to the current size of the variable (0 for uninitialized). ACCEPN ACCEPT INFLD (entry) INVUE (entry) LOG (dev$, p$, pn$) MIAMEX, MX_NXTCMD (cmdline) MIAMEX, MX_GETCISAM (version) MIAMEX, MX_GETGDO (g0, ... g9) MIAMEX, MX_XCBDATAX (should be replaced by xgetarg, xputarg anyway) MIAMEX, MX_CLIPBOARD (opcode 0 into text) MIAMEX, MX_REGISTRY, MX_READ MIAMEX, MX_REGISTRY, MX_ENUMKEYS MIAMEX, MX_REGISTRY, MX_ENUMVALS MIAMEX, MX_FINDWINDOW TINKEY XPPN (device, job, trmdef) Note that virtually all other documented subroutines already supported dynamic variables; the ones listed above had special issues. The one well-known exception is XTEXT, where the dst parameter does not currently recognize dynamic variables (even though they might be particularly handy there). 4. --- MX_FINDWINDOW refinement: It now returns updated title and class info into the respective variables, as indicated in the documentation. ========================================================================== A-Shell Development Notes Version 5.1.1159.7 (18 September 2009) ========================================================================== 1. --- Dynamic variable refinement: Reset the allocation unit (initial size of pool and amount by which it gets expanded) when resetting the pool. Previously, if a pool grew very large, the enlarged allocation unit was being used to recreate new pools even after the initial pool was freed (essentially wasting memory and/or making dynamic memory operations less efficient after a period of heavy expansion). ========================================================================== A-Shell Development Notes Version 5.1.1159.6 (18 September 2009) ========================================================================== 1. --- Dynamic variable bug fix: Close a spurious out-of-memory condition in XPUTARG. 2. --- Dynamic variable bug fix: XGETARG may have retrieved garbage in case where target (local) variable was fixed, but source was dynamic, if the memory pool had moved since the XCALL began. (Rare but possible.) ========================================================================== A-Shell Development Notes Version 5.1.1159.5 (18 September 2009) ========================================================================== 1. --- Dynamic variables bug fixes: multiple problems involving dynamic variables and nested sbxs, functions and procedures were resolved. 2. --- GETVER.SBR wasn't working when the passed variable was an uninitialized dynamic string. ========================================================================== A-Shell Development Notes Version 5.1.1159.4 (15 September 2009) ========================================================================== 1. --- Windows printing bug fix: previous fix in 1159.3 was causing printing to abort with file not found under certain conditions (file was being deleted too soon). ========================================================================== A-Shell Development Notes Version 5.1.1159.3 (09 September 2009) ========================================================================== 1. --- Windows printing bug fix: DELETE switch was not working in combination with preview and several GDI directives. 1========================================================================= A-Shell Development Notes Version 5.1.1159.2 (08 September 2009) ========================================================================== 1. --- Add current status (current fg/bg color numbers, Rev and Dim indications) to Colours dialog. ========================================================================== A-Shell Development Notes Version 5.1.1159.1 (04 September 2009) ========================================================================== 1. --- Fix various bugs with implementation of dynamic variables relating to arrays, DIMX, and REDIMX. Also, refine dynamic variable memory allocation plan (now doubles up to 64K, then increases by 25% each time). 2. --- INPUT bug fix: very long input lines were being effectively truncated at about 16K in length. There should be no specific limit now. ========================================================================== A-Shell Development Notes Version 5.1.1159.0 (03 September 2009) ========================================================================== 1. --- Introduce preliminary support for dynamically sized S and X variables. (This should be considered very much "beta", as the implementation "touched" many parts of the core variable handling logic and needs more field testing before it can be deemed safe for production.) To declare a dynamic variable, assign it an explicit size of zero, e.g.: MAP1 STRING,S,0 ! dynamically sized string MAP1 UNF,X,0 ! dynamically sized unformatted MAP1 DARY(75),S,0 ! fixed-length array of dynamic strings MAP1 XARY(24,9),X,0 ! fixed-length array of dynamic unformatted NOTE 1: Dynamic variables may only be declared at the MAP1 level. NOTE 2: An array may be made up of dynamic elements, but the range of index values for the array remains fixed. However, you may use DIMX and REDIMX to dynamically allocate and resize such as array, e.g. DIMX ZARY(A,B,C),S,0 REDIMX ZARY(A*2,B,C) (Redimensioning an array doesn't preserve the original contents unless only the first dimension changes, as in the example above.) Dynamic variables may also be used in function and procedure parameter lists, as well as for the return value of a function, i.e.: Function Fn'Test$(a$ as s0) as s0 Dynamic variables (and array elements) initially take up 8 bytes of storage memory (used as a descriptor), so it won't make much sense to use them if they aren't going to expand beyond 8 bytes. When an assignment is made to the variable, either via an assignment (e.g. STRING = "abc"), INPUT statement, or via an XCALL, Function, or Procedure, the variable will be expanded as needed to contain the data. If referenced in an expression before any value is assigned, they act like null strings. NOTE 3: It is not wise to use INPUT RAW with dynamic X variables, since the amount of data input depends on the current size of the variable, which would be 0 initially, but could be anything later (after some other kind of assignment). As currently implemented, the internal memory allocated to a variable does not shrink, so first assigning a large amount of data and later assigning a small amount does not free memory. (This may change as the implementation evolves.) Two pools of dynamic variable memory are maintained - one for global or persistent program variables, and one for automatic (aka local or stack) variables (i.e. within functions and procedures). Both are allowed to grow without any particular limit during the execution of a program, but are cleared (and the memory freed) when the program terminates. To compile programs with dynamic variables, you must use compiler edit 439+, and the /X:2 switch. Any legally compiled program containing dynamic variables will receive a new RUN header value of 0xF167 or 0xF1E7 (if /av), and will generate a "?RUN file incompatible" error if executed under any A-Shell runtime prior to 5.1.1159. Programs which do not contain dynamic variables should continue to compile and run exactly as before. 2. --- VERSYS.LIT 3.0(106) now recognizes the 0xF167 and 0xF1E7 run headers and reports them as requiring 5.1.1159+. It also now reports the header and compatibility status for SBXs (as well as RUNs and LITs). 3. --- GUI enhancement: Increase max length of menu item descriptions from 32 to 64 characters. 4. --- GUI bug fix: Fix problems with images getting distorted after resizing (minimizing/maximizing/restoring) the window. ========================================================================== A-Shell Development Notes Version 5.1.1158.5 (31 August 2009) ========================================================================== 1. --- ERSATZ system bug fix: ersatz name matching was ignored the characters beyond the first six, causing names longer than 6 characters to never be found unless unique in the first 6 characters. ========================================================================== A-Shell Development Notes Version 5.1.1158.4 (28 August 2009) ========================================================================== 1. --- XTREE bug fix: default fg/bg colors were sometimes getting set almost randomly. ========================================================================== A-Shell Development Notes Version 5.1.1158.3 (27 August 2009) ========================================================================== 1. --- Command file processing refinement: don't echo INPUT chars taken from the command file to the screen if NOECHO mode has been set. 2. --- Eliminate an intermittent spurious blank line output between the echoing of the initial command line and the next real output line. ========================================================================== A-Shell Development Notes Version 5.1.1158.2 (26 August 2009) ========================================================================== 1. --- Compiler bug fix!!!! - Compiler edit 437 (A-Shell 5.1.1157.0) introduced a bug in which references to unmapped variables within ++include files auto-mapped the variables as private to the the module, rather than global. Thus if the variable was first assigned a value within the ++include file, that value would not be visible when the same variable was accessed in the main file. 2. --- XTREE bug fix: When XTR'COLUMNSORT(0) was not zero (in order to force XTREE to initially sort the items), but XTF_SORT was not specified (so that the user could not re-sort them), the index to the selected row was not taking the sort into account. (It was returning the index relative to the items as displayed, not relative to the items as stored.) ========================================================================== A-Shell Development Notes Version 5.1.1158.1 (25 August 2009) ========================================================================== 1. --- New GDI printing command: //PAPERSIZE, Putting this command near the top of the first page of the file is equivalent to having PAPERSIZE = in the printer init file (see 5.1.1157 below). Note that as with the printer init PAPERSIZE command, the parameter may either be one of the symbolic names, or the equivalent numeric value. For example, the following two are equivalent. //PAPERSIZE,LEGAL //PAPERSIZE,5 One way to get the numeric equivalents is to activate the LP trace and print a file containing any //PAPERSIZE command; this will cause all the supported paper size names (and numbers) to be listed in the log or debug window. ========================================================================== A-Shell Development Notes Version 5.1.1158.0 (21 August 2009) ========================================================================== 1. --- XTREE enhancement: editable date and time fields can now use the Windows date/time picker control for editing, instead of the standard edit control. You can enable and configure the new editing method via one or both of the following: InfDef=D (in conjunction with a D column, i.e. date) InfDef=t (in conjunction with an h column, i.e time) For example: Coldef = "1~8~Date~DE~InfDef=D~~" You can make the date optional by specifying the "O" (optional) code in your InfDef string, i.e. InfDef=DO (Note that the InfDef clause is shared by all columns, so this method forces you to treat all editable date and time columns the same way.) In the above example, since the column width is 8, the format will be set to MM/DD/YY (or DD/MM/YY depending on the LDF). Otherwise the year would be returned in CCYY format. The other method for activating or configuring the date/time picker control is to specify a new advanced coldef parameter: Format= This clause is local to the column, and so does allow you different date editing options for different columns. Whenever there is a Format= clause defined for an editable date or time column, the date/time picker control will be used instead of the regular edit control. The is made up of the following special characters/fields; any other characters are treated as literals: d one or two digit day dd two digit day (zero padded) h one or two digit hour in 12-hour format hh two digit hour in 12-hour format H one or two digit hour in 24-hour format HH two digit hour in 24-hour format m one or two digit minute mm two digit minute M one or two digit month number MM two digit month number t one letter AM/PM abbreviation tt two letter AM/PM y one or two digit year yy two digit year yyy full four digit year For example: Coldef = "1~15~Date/Time~DE~Format=dd/MM/yyy HH:mm~~" The contents of that column should then look something like this: 08/15/2009 13:21 Note that in columns containing both time and date, you should use the cformat code D but not h. (Use h only when the column contains only a time.) Warning: if you supply date/time data in a format that doesn't match the defined format (including blank data) OR isn't compatible with IDTIM.SBR, the date/time picker will not be able to interpret your data. In such a case, if your InfDef clause contains "O" (for optional), the date/time picker will most likely replace your bad or empty data with the current date/time. Unfortunately this limits the format flexibility otherwise provided by the Format clause. (Future enhancements may allow for some additional time/date formats, but for now you are pretty much limited to numeric date format with slash or dash delimiters. If you need more flexibility than that, stick with the regular edit mode for dates.) ========================================================================== A-Shell Development Notes Version 5.1.1157.0 (19 August 2009) ========================================================================== 1. --- Windows printing enhancement: support for a new printer init command PAPERSIZE = where can be any of the following standard size names: LETTER, LEGAL, TABLOID, LEDGER, LEGAL, STATEMENT, EXECUTIVE, A3, A4, A4SMALL, A5, B4, B5, FOLIO, QUARTO, 10X14, 11X17, NOTE, ENV_9, ENV_10, ENV_11, ENV_12, ENV_14, CSHEET, DSHEET, ESHEET, ENV_DL, ENV_C3, ENV_C4, ENV_C5, ENV_C65, ENV_B4, ENV_B5, ENV_B6, ENV_ITALY, ENV_MONARCH, ENV_PERSONAL, FANFOLD_US, FANFOLD_STD_GERMAN, FANFOLD_LGL_GERMAN, ISO_B4, JAPANESE_POSTCARD, 9X11, 10X11, 15X11, ENV_INVITE, RESERVED_48, RESERVED_49, LETTER_EXTRA, LEGAL_EXTRA, TABLOID_EXTRA, A4_EXTRA, LETTER_TRANVERSE, A4_TRANSVERSE, LETTER_EXTRA_TRANSVERSE, A_PLUS, B_PLUS, LETTER_PLUS, A4_PLUS, A5_TRANSVERSE, B5_TRANSVERSE, A3_EXTRA, A5_EXTRA, B5_EXTRA, A2, A3_TRANVERSE, A3_EXTRA_TRANSVERSE, DBL_JAPANESE_POSTCARD, A6, JENV_KAKU2, JENV_KAKU3, JENV_CHOU3, JENV_CHOU4, LETTER_ROTATED, A3_ROATED, A4_ROTATED, A5_ROTATED, B4_JIS_ROATED, B5_JIS_ROTATED, JAPANESE_POSTCARD_ROTATED, DBS_JAPANESE_POSTCARD_ROTATED, A6_ROTATED, JENV_KAKU2_ROTATED, JENV_KAKU3_ROTATED, JENV_CHOU4_ROTATED, B6_JIS, B6_JIS_ROTATED, 12X11, JENV_YOU4, JENV_YOU4_ROTATED, P16K, P32K, P32KBIG, PENV_1, PENV_2, PENV_3, PENV_4, PENV_5, PENV_6, PENV_7, PENV_8, PENV_9, PENV_10, P16K_ROTATED, P32K_ROTATED, PENV_1_ROTATED, PENV_2_ROTATED, PENV_3_ROTATED, PENV_4_ROTATED, PENV_5_ROTATED, PENV_6_ROTATED, PENV_7_ROTATED, PENV_8_ROTATED, PENV_9_ROTATED, PENV_10_ROTATED If that list is too limiting, you can also specify the numeric code corresponding to the paper size. (You can retrieve the list of supported paper sizes in symbolic and numeric format by printing with the LP trace turned on.) PAPERSIZE acts as a kind of alternative to the BIN command, in that in that A-Shell passes the request to the printer with the hopes that the printer will select the bin which contains the requested size. (Most printers claim to support this capability, although the degree of support is questionable, and it may require that you first activate the feature through the printer's control panel or properties dialog. Similarly, it is almost always necessary for you to inform the printer of the size of paper you have in each bin (although perhaps there are some higher-end printers which have bins containing sensors to auto- detect the size.) As with the BIN command, the printer may indicate "support" for more bins (and more paper sizes) than are actually "available", and A-Shell doesn't do much enforcement. (An upcoming feature will instruct A-Shell to prompt the user if the desired paper does not appear to be available, but for the moment, A-Shell just assumes that it is.) So the main effect of specifying PAPERSIZE in the printer init file is to force A-Shell to use that paper size to base any size-dependent calculations affecting the format or spacing of the output ((as will APEX). ***WARNING: The process of working on the PAPERSIZE feature involved rewriting a lot of the existing Windows printing code, so developers and administrators would be well-advised to do some small-scale testing (or wait for others to do so) before distributing this update widely to end-users. 2. --- APEX refinement: Title bar of APEX window now displays the printer name and paper size being used for the preview context. 3. --- New 6.5 version of the XTREE control released (SftTree_IX86_A_65.dll) replaces the previous 6.0 version (SftTree_IX86_A_60.dll). The old dll will no longer work (you'll get a "Unable to load library" error if the new version is not present. New features have yet to be addressed (mostly it improves compatibility with Windows 7), except for the minor enhancement described next: 4. --- XTREE enhancement: double-clicking on the border between columns will now optimize the width of the column to the left (as in Excel), provided the column is not locked. 5. --- XTREE enhancement: New flag (in ashinc:xtree.def) will auto-expand the columns to fill the width of the tree control, eliminating the blank space that will otherwise appear when XTR'CLOSEDENDED=1 and the overall tree control is wider than it needs to be for the current data. define XTF2_AUTOEXPCOL= &h00000010 ! Auto Expand Columns to fill control The expansion operation increases the width of the visible columns by a uniform percentage rather than by a fixed number of pixels, thus preserving the relative widths. The last column will pick up any extra pixels left over from rounding and if there is no vertical scroll bar. The flag is ignored in split (XTF2_SPLIT) and open-ended (XTR'CLOSEDENDED=0) controls. 6. --- Compiler bug fix (edit 437) - references to PRIVATE variables were not being handled properly when not inside a function or procedure. Also, unmapped variables used to specify the dimensions of a PRIVATE DIMX statement were not being reported as compiler errors. 7. --- VUE (295) enhancement: VUE now automatically registers the equivalent of "PUSH 9" whenever leaving the current row (i.e. due to up/down arrow, page up/down, home/end, next match, etc.), allowing you to return with >POP 9. (Particularly useful if when searching to return to the prior match, or whenever you accidentally hit the HOME or END key.) 8. --- XTREE enhancement: support for CSV format as a variation of file mode. To indicate that the input file is in CSV format, a new flag has been defined (see notes for 1146.0 for info on mapping the second flags word): define XTF2_CSV = &h00000020 The are several variations on how columns and other attributes can be defined: - If you do not specify a column definition string in COLDEF (XTF_COLDFX), XTREE will auto-define columns based on the number of fields in the first row of the CSV file. (Currently it sets them all to a generic string type, although perhaps in the future an attempt will be made to auto-detect numeric and date columns). In the typical case, XTREE assumes that the first row of the CSV file contains the column names, which will be used to build the XTREE column headers. If your CSV does not contain such a header row, you can specify XTR'HIDEHEADER=1 (in XTRCTL), in which case the first row will be treated as data, and there will be no column headers. - You may specify your own column definitions using the standard COLDEF syntax, either in the CSV file itself (in which case set XTF_FCOLDEF and XTF_COLDFX), or in the COLDEF parameter (in which case set XTF_COLDFX as you would normally). However, note that if any real columns are defined, then only those columns will be properly recognized during the load operation. You may choose to define only pseudo-columns (with cpos=0 and cwidth=0, i.e. "0~0~x~H~...~~") in order to define other attributes, such as colors, fonts, popup menus, etc., in which case the actual column definitions will be auto-generated as in the first case described above. Note that whenever any real columns are defined using the advanced coldef syntax (in either COLDEF or in the file), it is assumed that there is no other header row in the file. If there is, use the skip syntax described below to skip over it. - To skip over lines at the top of the file, you can begin your COLDEF parameter with a {-skipval} clause as documented with 5.1.1115 or http://www.microsabio.net/dist/51dev/doc/ashdevnotes/coldefenhancement.htm Note that when XTF2_CSV is specified, the {-skipval} clause does not require XTF_FCOLDEF (i.e. doesn't require any column definitions in the data file), and it doesn't have to be followed by "+" or "=" and a valid coldef definition. So in other words, you can skip lines by starting the COLDEF parameter with a {-skipval} clause, whether or not you use any other COLDEF features. Examples: Assume the CSV file looks like this and that we are specifying the XTF2_CSV flag in all cases: Account,Name,Transaction Date,Amount 12345,"Smith,Fred",08/15/09,999.12 12346,"Jones,Jane",08/16/09,100.00 If COLDEF="", and neither the XTF_COLDFX nor XTF_FCOLDEF flags are set, XTREE will recognize and display 4 columns of data, creating headers from the first line. If XTR'HIDEHEADER=1, then it would treat the first line above as data, rather than as headers, and no header bar would be created. If XTF_COLDFX is set and COLDEF="-1", then it would skip the first line. (When skipping, even if XTR'HIDEHEADER=0, there will still be no header bar unless the COLDEF string contains real column definitions.) If COLDEF="0~0~x~H~HdrScale=200~~" (and XTF_COLDFX set), then the header scale will be set to 200, but the headers and column information will still be taking from the file (because the COLDEF does not define any real columns). If COLDEF="-1=1~1~Acct#~#~~2~1~Name~S~~3~1~Date~D~4~1~Amount~#~~", then the first line of the data file will be skipped (due to the "-1=" at the start of the COLDEF, and the columns will be defined by the COLDEF string in the normal way, except that due to the XTF2_CSV flag, the cpos and cwidth parameters do not matter (but must be >0). By convention, we have specified cpos values which equate to the field number, but there is currently no way to rearrange the columns with this technique. If we replaced the standard CSV header line at the top of the CSV file with a COLDEF string, as follows: 1~1~Acct#~#~~2~1~Name~S~~3~1~Date~D~4~1~Amount~#~~ 12345,"Smith,Fred",08/15/09,999.12 12346,"Jones,Jane",08/16/09,100.00 Then we could specify XTF_FCOLDEF and XTF_COLDFX to have XTREE retrieve the column definitons from the file. Optionally, we could add to the column definitons by setting the COLDEF parameter to "+" followed by a legal set of column definitions (presumably pseudo-columns in this example). 9. --- XTREE bug fix: Sorting in date columns (particularly when one or more items also had a time component) was not properly handling items where the date and/or time was blank. Also, in D/M/Y mode, times were always sorting ascending even when dates were descending. 10. --- GUI debugging enhancement: Control+Shift+DblLeftClick may now be used as an alternative to Control+Shift+DblRightClick (or +DblMiddleClick) to bring up the GUI Control dialog (to access the control dump & trace window.) (This solves a problem where the existence of a context menu interfered with the operation of the double-right-click.) 11. --- ATE bug fix: under some circumstances, when no Ftp login information was included in the profile, A-Shell was copying the telnet/ssh login information to it incorrectly such that the Ftp name was being filled in with the (encrypted) password. Not only did this mess up Ftp but caused the ATE configuration dialog to fail to create the Ftp name field so it could be edited. (If you have a profile with this problem, you may need to delete and re-create it.) ========================================================================== A-Shell Development Notes Version 5.1.1156.1 (03 August 2009) ========================================================================== 1. --- XTREE bug fix: the previous patch in 1155.8 to auto-expand the row header column was not working in some cases involving multi-level trees. ========================================================================== A-Shell Development Notes Version 5.1.1156.0 (31 July 2009) ========================================================================== 1. --- XTREE enhancement: XTROP_PRINT can now be used directly, without first creating the control. 2. --- XTREE enhancement: New flags (in ashinc:xtree.def) allow the orientation of the xtree print/preview operation to be forced: define XTF2_PORTRAIT = &h00000004 define XTF2_LANDSCAPE = &h00000008 3. --- XTREE enhancement: New advanced coldef clause VertAlign= may be used to alter the vertical alignment of text within cells from the default of center to TOP or BOTTOM. Syntax (not case sensitive): VertAlign=TOP VertAlign=BOTTOM Note that this only applies when ITEMLINES > 1. Also note that if VertAlign is applied to the zero column, it becomes the default for all the columns. Otherwise the clause only affects the current column. 4. --- ASTART.CMD[2,2] is no longer overwritten by the installer/updater. 5. --- AUI_MENU bug fix: deleting context menus was not freeing up the used space in the menu table, leading to an overflow of the table (the only symptom of which may have been that partial or invisible menus). 6. --- New command line switch to override user name: -uo launchname When specified, it creates a new entry in the existing hierarchy of user names: APP user (name specified by app via MX_SETUSRNAM) LAUNCH user (name specified on command line with -uo) REAL user (the name used to login in to the OS*) *Note that under UNIX, the REAL user could also be the "effective" effective" user (i.e. the owner of the ashell executable if the +s flag is set). See OPTIONS=EFFUSR for information on how the various routines that return user name decide between those two.) The REAL user name is always defined (since you need it to log in to the host OS. The other two levels are optional, but default to the level below it. For example, if you don't specify the -uo switch, then the LAUNCH user will be the same as the REAL user. To bypass the normal hierarchy and retrieve the LAUNCH or REAL user name directly, you can pass either "!" or "!!" to GETUSN.SBR, e.g.: USER$ = "!" XCALL GETUSN,USER$ ! returns LAUNCH user in USER$ USER$ = "!!" XCALL GETUSN,USER$ ! returns REAL user in USER$ (The "!!" option is new as of this release; the "!" was introduced long ago.) Note that XCALL MIAMEX,MX_SETUSRNAM,"" (reset application user name) will effectively reset it to the LAUNCH user. The only way for an application to force the APP user name to the REAL user (overriding the LAUNCH user) would be to retrieve the REAL name with the GETUSN "!!" method, and then use MX_SETUSRNAM to set the APP user to match the REAL user. 7. --- ATE tracing refinement: Tracing of aux printing operations is now more complete. (Requires ATE and GDIPRT trace flags be set). ========================================================================== A-Shell Development Notes Version 5.1.1155.9 (30 July 2009) ========================================================================== 1. --- AUI_CONTROL bug fix: MBF2_PIXSIZE wasn't working. (Broken during millicolumn implementation, around 1139). 2. --- AUI_CONTROL / INFLD bug fix: When the ||f TYPE was used and the default GUI control font was set to something other than the default, deleting an INFLD control was sometimes causing the font to be deleted, even when other controls were sharing the same font. (The effect was that those other controls would suddenly change font when given the focus.) 3. --- AUI_IMAGE bug: Certain image scaling options were causing A-Shell to crash when the image belonged to a dialog with a non-standard background color. ========================================================================== A-Shell Development Notes Version 5.1.1155.8 (28 July 2009) ========================================================================== 1. --- XTREE bug fix: the new optional column of row headers (see 1151.0) was not auto-expanding as needed to contain the largest entry (causing line number row headers to be truncated at about 2 digits). ========================================================================== A-Shell Development Notes Version 5.1.1155.7 (25 July 2009) ========================================================================== 1. --- Control creation bugfix: MBST_HCENTER and MBST_VCENTER were not working properly. Dialogs were being centered relative to desktop rather than actual parent and child controls were often placed outside of parent. ========================================================================== A-Shell Development Notes Version 5.1.1155.6 (23 July 2009) ========================================================================== 1. --- Memory allocation bug fix: changing the main partition size with MEMORY.LIT or MX_MEMORY was failing to free the old partition, causing memory usage to accumulate with repeated changes to the memory partition size (until the A-Shell session ended). 2. --- XTREE bug fix: XTROP_PRINT via ATE with file mode was causing extra characters to be sent to the host, leading to unexpected behavior (such as a Control-C abort). (Fix affects only ASHW32.EXE) ========================================================================== A-Shell Development Notes Version 5.1.1155.5 (21 July 2009) ========================================================================== 1. --- VUE (294) bug fix: scrap / undo buffer operations were not handling TABs properly. (The recalled text displayed ok initially, but didn't get saved as displayed.) ========================================================================== A-Shell Development Notes Version 5.1.1155.4(18 July 2009) ========================================================================== 1. --- AMBTOA now allows 8 bit chars. ========================================================================== A-Shell Development Notes Version 5.1.1155.3 (09 July 2009) ========================================================================== 1. --- Windows common dialog refinement: some dialogs, like the File Open, Choose Font, and Choose Printer dialogs, were acting as siblings to the current dialog (if called from a dialog rather than the main window). This was harmless, but could lead to confusion since clicking on the A-Shell dialog would make it appear to be live (and on top of the pop-up dialog), even though it was still waiting on the pop-up dialog. 2. --- ATE refinement: TCRTs 102/103 (start/end underscore reverse) now work. ========================================================================== A-Shell Development Notes Version 5.1.1155.2 (09 July 2009) ========================================================================== 1. --- XTREE refinement: up/down arrows now operate within multi-line editable cells. Previously, they moved cell-to-cell, as they do (and should) for single-line cells. Use Control+arrow to escalate the action from within-cell to cell-to-cell. 2. --- PDFX refinement: //PDFX,Save.FullFileName now distinguishes between paths that have dots in them, and filenames, by whether the dot has a slash to the right of it. For example: treated as a file: //PDFX,Save.FullFileName,\\mydomain.com treated as a directory: //PDFX,Save.FullFileName,\\mydomain.com\ ========================================================================== A-Shell Development Notes Version 5.1.1155.1 (08 July 2009) ========================================================================== 1. --- PDFX bug-fix: Specifying a network path or directory in the //PDFX,Save.FullFileName statement was generating a spurious error message box (about access denied). 2. --- MX_GETOFD / AG_GETOFD bug fix: aborting from File Open or Save dialog which supported multi-select was failing to return a null string (the normal indicator of error). 3. --- XTREE bug fix: The special $RESETCFG action in a PopupMenu was transmitting the string "$RESETCFG" to the app, in addition to what it was supposed to do (i.e. reset the saved column configuration.) (Problem was introduced in 1154.6) ========================================================================== A-Shell Development Notes Version 5.1.1155.0 (07 July 2009) ========================================================================== 1. --- AUI_MENU enhancements: You may now enable/disable and delete internal menu items by their internal command ID value (100-199, see AG_MENU topic in Dev Guide for list), as well as by position. The new method is more robust, since the internal command ID values are not subject to change, like the positions are. 2. --- AUI_MENU enhancements: You may add menu items that act like the internal menu items, using the new mtype flag MBF_MENUID (&h00040000), and putting the string representation of the internal ID value (which must be one of the pre-defined values used by the internal menus and in the range of 100-199) in the Cmd parameter. This technique is useful in cases where you want to remove and later re-add individual internal menu items, or where you want to rearrange some of the internal menu items. For example, to delete File > Exit and add a "New Exit" option to the Settings menu: mnu'exit'id$ = "111" ! internal ID of File > Exit xcall AUI, AUI_MENU, MNUOP_DEL, 1, mnu'exit'id$, 0, 0, "", "", status xcall AUI, AUI_MENU, MNUOP_ADD, 3, "New Exit", MBST_ENABLE, & MBF_MENUID, mnu'exit'id$, "", status Note that the menuid parameters 1 and 3 reference the top level File and Settings menu by position. 3. --- XTREE (ATE server-side) optimization bug fix for problem introduced in 1152.4 (which fixed one optimization issue and create a larger one). ========================================================================== A-Shell Development Notes Version 5.1.1154.7 (02 July 2009) ========================================================================== 1. --- MX_AGWRAPPER refinement (server side): The ATE response timeout period is now automatically set to infinite (rather than the standard 5 seconds) for: AG_XFUNC, AG_XFUNCS, AG_FTP and AG_FTPSYNC. Previously, when these commands took longer than 5 seconds (which is quite common), MX_AGWRAPPER was timing out and returning a null response. To allow further fine-tuning of the timeout, an optional timeout parameter has been added: xcall MIAMEX, MX_AGWRAPPER, AGCMD, PARMS, RESPONSE {,TIMEOUT) The optional TIMEOUT param may specify the maximum wait (in ms) before MX_AGWRAPPER will return with no response. 2. --- XTREE bug fix: the patch in 1154.6 for the answer array optimization with checkboxes was sometimes resulting in disabled checkboxes. 3. --- Windows printing bug fix: a potential for an invalid address reference (possibly leading to a GPF) has been closed. The issue was introduced in 1150.7. ========================================================================== A-Shell Development Notes Version 5.1.1154.6 (01 July 2009) ========================================================================== 1. --- XTREE bug fix (client side): Fix a problem introduced in the answer array optimization logic introduced in 5.1.1150, in which re-entering with an unchanged answer array but a changed data array was causing checkbox cells to revert to plain text numeric cells. 2. --- XTREE refinement: The special context menu commands related to check boxes ($CBSET, $CBRST, etc.) which were introduced in 1150.8 now trigger the exit-for-validation logic. ========================================================================== A-Shell Development Notes Version 5.1.1154.5 (01 July 2009) ========================================================================== 1. --- Printing bug fix: a memory leak was introduced in 1150.7 causing a memory handle to be lost on each print operation. Besides wasting memory, eventually this would lead to a "OUT OF MEMORY HANDLES" error (after about 100 print operations). (Note: an attempted fix for this in 1154.4 didn't work.) ========================================================================== A-Shell Development Notes Version 5.1.1154.4 (30 June 2009) ========================================================================== 1. --- FTP bug fix: the recent change in 1153.1 was causing FTP to fail with an unable to open file error in some cases, when ASHFTPDEBUG set. 2. --- XTREE bug fix: setting XTR'EXPANDLEVEL to 9 wasn't always expanding items at lower levels. ========================================================================== A-Shell Development Notes Version 5.1.1154.2 (27 June 2009) ========================================================================== 1. --- AUI_MENU bug fixes: Nested submenus in the first position of their parent menu were not working properly. Menu deletion was not entirely clean, causing problems if menus repeatedly deleted and re-added. Misc other internal cleanup. 2. --- AUI_MENU debugging feature: Control+Shift+DoubleRightClick menu now has an option to dump the custom menu array to a spreadsheet. The concept is similar to that for the control array. ========================================================================== A-Shell Development Notes Version 5.1.1154.1 (26 June 2009) ========================================================================== 1. --- APEX update: underlying library SftPrintPreview_IX86_A_20.dll upgraded from 2.0.0.1 to 2.0.2.0 (minor internal fixes). 2. --- MIAMEX,MX_OSVER enhancement: now properly identifies Windows 7 (Win7), W2003 Server (WinSvr2003 and WinSvr2003R2), and W2008 Server (WinSvr2008 and WinSvr2008RS). Previously they were identified only by their major and minor version numbers (e.g. Win 6.1). 3. --- AUI_MENU fix: menu icons (from ICO files or icon resources in a DLL) now display properly under pre-Vista versions of Windows (although they always display in the default size of 13x13). Images from BMP files get clipped to 13x13 under XP and prior, so are not recommended (unless you have BMP files that are actually that size or less.) ========================================================================== A-Shell Development Notes Version 5.1.1154.0 (25 June 2009) ========================================================================== 1. --- AUI_MENU enhancement: Menu items may now display images, loaded either from BMP or ICO files, or from bitmap or icon resources inside a DLL. The image is specified by enclosing it in vertical bars i.e.: mnutxt = "Option 1" ! text only mnutxt = "|fspec|Option 2" ! image (from fspec file) + text mnutxt = "|resname::lib|Option 3" ! image (resname within lib.dll) + text You may also specify a desired size in pixels by appending "=##" to the end of the image spec, where ## is a number between 10 and 99. (The images are assumed to be square. If no size is specified, for standalone BMP files, the actual size of the bitmap will be used; for icons, the size will be set to 16x16 (which is the standard size of a menu icon). Best results will be obtained when the actual image size (or, in the case of icons, when one of the available images) matches the target size. In the above examples, fspec may be an AMOS or Windows native style filespec of a BMP or ICO file. (ATE will also look in the two cache directories if not found in the specified location.) resname is the resource name of the image within the specified library, which will be loaded from the same directory where the ashw32.exe was loaded. Examples: mnutxt = "|images:fopen.bmp|Open File" mnutxt = "|help.ico[7,57]=64|Help" mnutxt = "|%MIAME%\images\exit.ico=32|Exit" mnutxt = "|paste::ashico1v|Paste" See the sample program ASMNU3.BP (in [908,35] of SOSLIB) for examples. ========================================================================== A-Shell Development Notes Version 5.1.1153.1 (25 June 2009) ========================================================================== 1. --- FTPDLX low-level debugging log moved from c:\debug.log to %TEMP%\ftpdebug.log (to avoid Vista security issues and also to reduce ambiguity.) Note that this adjustment is partly in ASHW32.EXE and partly in FTPDLXCALL2.DLL (version 5.1.0.205) - upgrading only one or the other will not fully address the issue. ========================================================================== A-Shell Development Notes Version 5.1.1153.0 (22 June 2009) ========================================================================== 1. --- New MIAMEX function MX_AGWRAPPER (177) serves as a convenient wrapper for "raw" ATE commands that are otherwise invoked via a sequence like: ? TAB(-10,AGCMD);PARMS;chr(127); input "",RESPONSE The MX_AGWRAPPER function reduces the above sequence to: xcall MIAMEX, MX_AGWRAPPER, AGCMD, PARMS, RESPONSE Aside from simplifying the syntax, MX_AGWRAPPER provides some intelligence to deal with the problem of typeahead that may be "in the pipe" at the time the command was issued and thus get mixed into the response. Note that the function should only be used with ATE (AG_xxx) functions that return a response. Otherwise there will be a 2 second delay until it times out waiting. 2. --- ATE refinement (server side): Server now informs ATE whenever a RUN program is starting and the keyboard channel is not being actively controlled by ATE. This allows ATE to start managing the keyboard data immediately, rather than waiting for the first ATE command issued by the program (and allowing typeahead characters to slip through in the meantime). While typeahead isn't necessarily a problem, it does complicate handling of ATE commands that require responses, and at best, slows down the connection due to excess round trips. 3. --- New XCALL TIMES built-in subroutine returns high-precision time information: xcall TIMES,opcode, The following opcodes have been implemented (so far): xcall TIMES,1,SEC ! seconds since midnight opcode 1 returns the number of seconds since midnight. This is equivalent to the system variable TIME, except that if the SECS parameter is a floating point variable, then the returned value may return fractional seconds. xcall TIMES,2,MSECS ! milliseconds since midnight opcode 2 returns the number of milliseconds since midnight. As with Op 1, if the MSECS is a floating point variable, a floating point (not necessarily integer) value will be returned. xcall TIMES,3,USECS ! usecs elapsed opcode 3 returns the number of microseconds elapsed since the last opcode 3. Note that this is only practical for timing operations lasting only seconds or perhaps minutes, but not hours or days. The first time called, the return value will be essentially random garbage. 4. --- AUI_MENU enhancements: Applications can now create menus with checked items (both standard and radio-style), as well as nested submenus, through the addition of a new optional parameter (itemid) and several new parameter flags: xcall AUI, AUI_MENU, opcode, menuid, mnutxt, mstate, mtype, & cmd, func, mstatus {,dlgid {,itemid}} The new parameter, itemid, may be used to attach a unique numeric ID to any menu item, in the range of 1000-32767. The id is optional for the existing menu item types, but necessary for submenus and checked menu items (in order to more easily reference them for querying, setting, or adding nested items to). New mtype flags: MBF_CHKMNU (&h0004) - A checked menu item MBF_RADIOMNU (&h0008) - A radio-style checked menu item New mstate flags: MBST_CHECKED (&h10000000) - Item is checked MBST_HILITE (&h20000000) - Item is hilighted MBST_DEFAULT (&h40000000) - Item is the default option Setting the checked state under application control: Checkable items start out unchecked by default, unless you specify the MBST_CHECKED state flag when adding the item. Applications may also change the checked state of an item using opcode MNUOP_STA, identifying the item via its parent menu id (menuid) and its item id (itemid), and setting or clearing the MBST_CHECKED flag in mstate. Setting the checked state under user control: The checked state is automatically toggled whenever the user clicks on a checkable menu item. Checkable items can also act like other menu items (depending on the MBF_KBD, MBF_CMDLIN, and MBF_SHLEXC flags, and the mnutxt contents). If you want the application to be notified whenever the checked state is changed by the user, specify the MBF_KBD flag and set mnutxt to a virtual symbolic key string (e.g. "VK_xF1001"). Otherwise, the application will be ignorant of changes to the checked state unless or until it queries the item explicitly (see below). Querying the checked state: opcode MNUOP_CHK now returns the current state of a menu item in the mstatus parameter (using the MBST_xxxx flags). Currently you must query the items individually, specifying the menuid and itemid. Radio check items: These act just like regular check menu items, except: - they are created with MBF_RADIOMNU rather than MBF_CHKMNU - when one of them is set, the others in the group are automatically unset. (A 'group' is a set of contiguous radio check items.) Hilighting: The MBST_HILITE state adds some kind of visual highlighting to the item. Under Vista, the effect is quite subtle, and basically the same as what you get when the mouse hovers over an item. Submenus: To create a submenu, use the MBF_SUBMNU flag and specify a menuid other than 0. (Submenus whose parent menuid is 0 are top-level drop-down menus.) To create the items within the submenu, set the menuid to match the itemid of the submenu itself. The new SOSLIB sample program ASMNU2 illustrates all of these capabilities. ========================================================================== A-Shell Development Notes Version 5.1.1152.6 (20 June 2009) ========================================================================== 1. --- ATE refinement: reverse order of typeahead processing to reduce chance of handling typed-ahead characters out of order. However, the value of this improvement is limited; a more robust solution may require converting certain TAB(-10,AG_xxx) commands to MX_xxx equivalents. (To be addressed in 1153.) ========================================================================== A-Shell Development Notes Version 5.1.1152.5 (17 June 2009) ========================================================================== 1. --- INFLD bug fix: fields that were too wide to fit on the screen were ending up invisible instead of shifted over to the left. (Bug introduced in 1139 with millicolumns.) 2. --- ATE refinement: close a loophole in which typeahead was slipping through on the tail end of ATE commands, resulting in typeahead characters getting garbled or rearranged. (Unfortunately, other such loopholes remain, particularly when intermixing TAB(-10,AG_xxx) commands that require responses with text-mode or raw input operations.) ========================================================================== A-Shell Development Notes Version 5.1.1152.4 (16 June 2009) ========================================================================== 1. --- XTREE/ATE (server side) bug fix: close a loophole in the optimization logic. If the user changed a cell, but then the application changed it back and re-entered, the optimization logic thought there was no change (which was partially correct), but that left the tree data out of sync with the answer array. 2. --- XTREE split/editable refinement: editable cell navigation now allows crossing over from the left pane to the right. Previously, navigation was only supported on the right, which meant that any editable cells in the left pane were only accessible by clicking on them in a way that didn't cause exit/re-entry for validation. ========================================================================== A-Shell Development Notes Version 5.1.1152.3 (15 June 2009) ========================================================================== 1. --- Windows printing bug fix: The pseudo-device names (DISK:, FAX:, etc.) were inadvertently made case-sensitive in 1150.4, causing problems with printer init files which used lower case names. ========================================================================== A-Shell Development Notes Version 5.1.1152.2 (12 June 2009) ========================================================================== 1. --- APEX refinement: Control+P now works as an alternative to clicking on the PRINT button (i.e. brings up the print dialog). ========================================================================== A-Shell Development Notes Version 5.1.1152.1 (09 June 2009) ========================================================================== 1. --- ATE refinement: transport error messageboxes were leaving the main window suspended until the message was acknowleged, which is reasonable, but was leaving open the possibility that the message box could become covered by another application window, giving the user the impression that ATE was just dead for no reason. Also, there was no way to copy and paste text from the window, since clicking OK on the error message generally led to the window being closed. 2. --- The A-Shell menu-bar options are now set according to the LANGUAGE option in the miame.ini. 3. --- Windows printing refinement: if the CHARSET option in the miame.ini is set to one of the 7-bit national replacement options (FRENCH, UK, PORTUG, SPANISH, or ITALIAN), then the print subsystem will convert the 7-bit characters for which replacements were defined into the ANSI equivalent so that they print correctly. ========================================================================== A-Shell Development Notes Version 5.1.1152.0 (07 June 2009) ========================================================================== 1. --- New ATE command AG_SETENV (77) to set an environment variable: ? TAB(-10,AG_SETENV);"=";chr(127); Example: ? TAB(-10,AG_SETENV);"APEX=%MIAME%\cache";chr(127); The above example defines (or redefines) the environment variable APEX to equal the specified directory, after first expanding the environment variable %MIAME%. (Note that the APEX environment variable defines where ATE puts the print files captured for local print or preview operations.) 2. --- Windows/ATE printing enhancement: when printing to the DISK: pseudo-printer (including via ATEAPX.SBX), the target directory will now be created if necessary. (The parent directory must exist though.) ========================================================================== A-Shell Development Notes Version 5.1.1151.1 (05 June 2009) ========================================================================== 1. --- COMPIL fix (compiler edit 436): The previous fix (435, 1151.0) wasn't quite right and was resulting in spurious compiler syntax errors. 2. --- XTREE revision: Move the new XTR'MISCFLAGS overlay from XTR'SHOW3D to XTR'TRUNCATED. New placement avoids problem of unexpectedly going into 3D mode when programs using the new flags are run on older versions of A-Shell or ATE. (The truncated option is less noticeable and generally always desirable anyway, so if it goes on or off unexpectedly, no one will be overly concerned.) Programs should be recompiled with the updated XTREE.MAP, XTREE.DEF, and XTREE.SDF files (retrieve from the SOSLIB). ========================================================================== A-Shell Development Notes Version 5.1.1151.0 (03 June 2009) ========================================================================== 1. --- XTREE enhancement: new XTRCTL fields to enable and configure "row headers". "Row headers" are like column headers but appear on the left side of the each item. Currently the only display options are to display row numbers, either starting with 0 or 1, and to display them as text or buttons. ... MAP2 XTR'HEADERSTYLE,B,1 ! col hdr style (XTHSF_xxx) MAP2 XTR'ROWHDRSTYLE,B,1 ! row hdr style (XTHSF_xxx) MAP2 XTR'SHOWROWHDR,B,1 ! row hdr vis/type (XTRHF_xxx) MAP2 XTR'UNUSED2,X,13 ! unused XTR'ROWHDRSTYLE uses the same flags as XTR'HEADERSTYLE XTHSF_xxxx) XTR'SHOWROWHDR uses the following new flags (defined in XTREE.DEF): define XTRHF_NONE = 0 ! no row headers (default) define XTRHF_BTNCNT0 = 3 ! numeric buttons, from 0 define XTRHF_TITLECNT0 = 4 ! numeric titles, from 0 define XTRHF_BTNCNT1 = 5 ! numeric buttons, from 1 define XTRHF_TITLECNT1 = 6 ! numeric titles, from 1 The differences between "buttons" and "titles" are that buttons are clickable (as a way of selecting the item), and they have a slightly different look. 2. --- XTREE enhancement: The existing XTR'SHOW3D field has been replaced with XTR'MISCFLAGS to allow more options to share the byte. To maintain backward compatibility, the new field overlays the old one, and the option bits are defined to avoid conflict: ... MAP2 XTR'SHOW3D,B,1 ! display using 3D mode MAP2 XTR'MISCFLAGS,B,1,@XTR'SHOW3D ! misc flags (XTMF_xxx) ... So far, the following flags are defined (in XTREE.DEF): define XTMF_SHOW3D = &h01 ! 3D mode define XTMF_INTHEIGHT = &h02 ! make height integral # of rows define XTMF_INHERITBG = &h04 ! left margin inherits bg from 1st col The XTMF_INTHEIGHT option applies only to trees with fixed-height rows (XTF_VARY is not set), forcing the overall height of the tree to be reduced slightly to avoid a partially displayed row. The XTMF_INHERITBG option affects the background of the left margin area, which, depending on many factors, may be visible to the left of the first column. 3. --- COMPIL bug fix (compiler edit 435): whenever the compilation had to be restarted in order to automatically activate the /A or /AV switch, if the program used defined structures, the compiler was consuming 1 or 2 memory handles, leading eventually to an "out of memory handles" error (after about 50 such compilations). 4. --- XTREE bug fix: in some cases, exiting from the bottom row of a tree via a context menu was returning XTR'TARGETROW set to 1 less than the actual row clicked. 5. --- XTREE bug fix: extended checkbox context menu commands (see 1150.8) that were not showing (because not applicable to the current column) were resulting in the menu operation not matching up with the menu text. ========================================================================== A-Shell Development Notes Version 5.1.1150.8 (03 June 2009) ========================================================================== 1. --- XTREE checkbox enhancement: Extended checkbox columns ("T+", see 1150.6) now support an undo capability (using ^Z) to undo the action of ^A (set all), ^B (clear all), and Shift+Click (set range) operations. The undo feature is only operational immediately after the event to be undone. 2. --- XTREE checkbox enhancement: New special PopupMenu actions have been implemented to allow access to the set all (^A), clear all (^B) set all dependents of current item, clear all dependents of current item, and undo (^Z) functions: $CBSET, $CBRST, $CBSETDEP, $CBRSTDEP and $CBUNDO. These may be added to individual column menus, or to the common (column zero) menu. In either case, they will only appear when an extended checkbox column (T+) is right-clicked. Furthermore, the undo option will only be enabled when undo is possible. For example: Coldef = "0~0~x~H~PopupMenu=Set All,$CBSET;Clear All,$CBRST;" & + "Set all dependents,$CBSETDEP;Clear all dependents;$CBRSTDEP;" & + "Undo;$CBUNDO~~" The above would create a common popup menu with the specified functions which would only appear in the context of an extended checkbox column. Note that if XTF_MLVL is not set (i.e. tree is not multi-level), the $CBxxxDEP options will be ignored. If multi-level, but the clicked-on item doesn't have dependents, then the option will be disabled. ========================================================================== A-Shell Development Notes Version 5.1.1150.7 (03 June 2009) ========================================================================== 1. --- Windows Printing enhancement: Modernize the printer matching logic. Previous method was running into limitations in some newer environments, such as an inability to scan more than about 14 printers. Also, if a printer is known to exist but A-Shell fails to find it in the matching logic, you can set the first character of the printer name in the DEVICE statement to lower case (e.g. DEVICE = hP Laser), in which case if it fails to find it in the directory, it it will trust you and just try to open it blindly. (This has long been the procedure for printers using share names like \\server\name.) ========================================================================== A-Shell Development Notes Version 5.1.1150.6 (02 June 2009) ========================================================================== 1. --- XTREE enhancement: The new cformat code "+" may be added to "T" (i.e. "T+") to enable entended checkbox functions whenever the focus is on an editable checkbox cell: - Control+A ticks all the checkboxes in the column - Control+B clears all the checkboxes in the column - Click, followed by Shift+Click on another checkbox in the current column ticks all the checkboxes between the two clicked boxes. ========================================================================== A-Shell Development Notes Version 5.1.1150.5 (01 June 2009) ========================================================================== 1. --- XTREE Image handling bug fixes: The internal image count was not being reset when using XTROP_REPLACE, leading to an eventual failure to load images (when the XTF_VARY flag set). Even then, XTREE should have auto-expanded the image allocation according to the second argument of the ImgCount=#,# coldef clause (grow-by), but was failing to do so when XTF_VARY was set. ========================================================================== A-Shell Development Notes Version 5.1.1150.4 (27 May 2009) ========================================================================== 1. --- GDI printing bug fix: an adjustment around 1148 to correct a problem with vertical spacing getting way out of kilter when previewing and then printing was causing the LPP value in the printer INI to be effectively ignored. (In the absence of a //SETVMI command, this in was resulting in the vertical spacing getting initialized based on the font and/or paper size.) 2. --- XTREE/ATE bug fix: Server side was crashing when XTREE called without specifying the XTRCTL parameter. (Problem introduced in 1150.0) ========================================================================== A-Shell Development Notes Version 5.1.1150.3 (27 May 2009) ========================================================================== 1. --- XTEXT refinement: XTEXT now supports ATE-client-relative filespecs for the source and destination. Previously it was complaining that the source file was not available. ========================================================================== A-Shell Development Notes Version 5.1.1150.2 (26 May 2009) ========================================================================== 1. --- XTREE refinement: On re-entry, if xtr'targetrow=0, use xtr'xrow to determine vertical scroll position. 2. --- XTREE bug fix: ansary optimization introduced in 1150 was causing entire TXTCTL structure to not be updated. ========================================================================== A-Shell Development Notes Version 5.1.1150.1 (25 May 2009) ========================================================================== 1. --- XTEXT bug fix (serious!!!): None of the fields in the TXTCTL structure were getting updated on exit, as a result of a coding error introduced in 1150.0. In some programs, this problem was not an issue, but in others, it was catastrophic. ========================================================================== A-Shell Development Notes Version 5.1.1150.0 (22 May 2009) ========================================================================== 1. --- XTREE / ATE optimization: When using opcode XTROP_REPLACE, the server side of XTREE now detects when the data array has not changed from the previous call, and in such a case, automatically switches to XTROP_RESELECT mode (which saves transferring the data from the server to the client, as well as loading it into the tree.) This optimization is mostly useful in situations where cell-to-cell movement causes an exit and reentry, and you are obligated to use XTROP_REPLACE rather than XTROP_RESELECT because you can't be sure if the data actually changed. (A multi-user appointment scheduler would be an example, where you have to reload the schedule data from disk because you don't know if another user made a change in the meantime.) Note: this optimization is purely on the server side, and thus will work with older ATE clients as well. 2. --- XTREE / ATE optimization: Similar to the optimization of the data array just described, but for the answer array. For editable trees with opcodes XTROP_REPLACE and XTROP_RESELECT, the server side detects if the answer array has changed since the previous call, and if not, it eliminates the redundant transfer of answer data to the ATE client. As with the above described optimization, this is primarily handled on the server side, and works even with older ATE clients. However, the optimization is somewhat better if the ATE client is also at 5.1.1150+, since in that case it is also able to skip the CPU activity involved in scanning/re-loading the editable cells from the answer array. 3. --- XTEXT bug fix: Older programs using the 256 byte version of the TXTCTL structure in a non-ATE environment were getting the equivalent of garbage values in the last few fields of the structure, causing the new printing features to act strange. 4. --- XTREE refinement: The XTHSF_NOTBTN flag (see 1142.0) has been renamed to XTHSF_NOHIGHLIGHT and its behhavior changed slightly so that the headers can still be clicked to sort the column. In the new scheme, they are actually buttons, but they don't get auto-highlighted when the column is active. 5. --- XTEXT enhancement: new opcode flag, TXOPF_PREVIEW (&h0020), may be added to TXOP_CREATE, TXOP_REEDIT, or TXOP_DISPLAY to cause XTEXT to display the print preview window. In the case of TXOP_CREATE or TXOP_REEDIT, the user will be left to manipulate the preview, which also means that he/she will be able to print and/or return to edit mode. 6. --- Windows printing enhancement: Whenever a printer is selected from the printer selection dialog, that printer becomes the default, for this user, for any subsequent A-Shell printer selection dialogs. Previously, the printer selection dialog always started at the global Windows default printer for this workstation. Besides being more convenient and intuitive for the user, this also means that any special configuration saved for the printer in the printer driver properties will be used as the default configuration (rather than the default printer's configuration). ========================================================================== A-Shell Development Notes Version 5.1.1149.3 (20 May 2009) ========================================================================== 1. --- Close system lockup loophole: A small window of opportunity was identified and closed, which could have led to the JOBTBL being locked by one job and left locked indefinitely. The problem was only seen (as far as we know) on large UNIX systems where A-Shell jobs were being killed off by kill -9, resulting in phantoms. (If you have to kill an A-Shell process, you should use KILL.LIT, possibly with the /K, switch, or kill -15, since any of these can be trapped by A-Shell to allow an orderly exit. kill -9 should be the absolute last result, as it may leave a mess to clean up, which in this case was opening the window of opportunity for the lockup.) In theory, the problem might have also occurred under Windows, perhaps if the Task Manager was frequently used to kill A-Shell processes, but it was never reported. ========================================================================== A-Shell Development Notes Version 5.1.1149.2 (19 May 2009) ========================================================================== 1. --- Windows printing refinement: when using passthrough printing to a printer defined only by a sharename (\\machine\printer), in some environments it is unable to open the document properties in order to preset the orientation and copies. Previously in such cases it was displaying an error message box, even though it would then go on to print successfully. Now the error message is only written to the log file, unless the LP trace option is set. Note that this could obscure an error, confusing the question of why the orientation or copies is not getting set as expected. But in such cases, the error information will be in the ashlog.log file, while in all the other cases, the user no longer needs to be bothered by the non-critical error report. ========================================================================== A-Shell Development Notes Version 5.1.1149.1 (18 May 2009) ========================================================================== 1. --- AUI_MENU / ATE bug fix: Using MNUOP_RST (reset menu) under ATE was failing to re-establish the special ATE menu items (licensing, open local session, disconnect, connection properties). 2. --- ATE AUXLOC: printing enhancement: It is now possible to combine the +G{DI} or +P{ASSTHROUGH} option with a printer name (whether a printer init file or a raw Windows printer name) in the DEVICE = AUXLOC: statement. For example: DEVICE = AUXLOC:\\SERVER\SHARE NAME+PASSTHROUGH DEVICE = AUXLOC:HP Laserjet Series 37+PASS Previously all three of the above would have been interpreted as printer names (e.g. INVOIC+GDI, etc.) and would have therefore failed to find a match. Now, the +G{DI} or +P{ASSTHROUGH} will be recognized (in order to specify the associated mode) and not treated as part of the printer name. Notes: - Prior versions of A-Shell on the server side were limiting the total length of the printer name (+ optional mode) specification to 32 bytes. - The mode may be specified with a few as 2 characters (e.g. +G or +P). (The downside of this is that those pairs of characters cannot appear within the printer name itself.) - When printing to a printer by its raw Windows printer name or share name (i.e. not via a printer init file), the default mode is GDI, so there is no particular need to specify +GDI in that case. - When printing to a printer via a printer init file, the printer init file will override any mode specified in the DEVICE=AUXLOC: statement. (Even if the printer init file has no PASSTHROUGH statement, that is equivalent to PASSTHROUGH=ON). ========================================================================== A-Shell Development Notes Version 5.1.1149.0 (16 May 2009) ========================================================================== 1. --- XTEXT enhancement: New opcode/flag: TXOPF_PRINT (&h010) may be added to TXOP_CREATE (1) or TXOP_REEDIT (2) to print an XTEXT document (independently of anything else and outside of the normal A-Shell printing subsystem). The combination TXOP_CREATE + TXOPF_PRINT can be used to print an XTEXT document from the source (file or buffer), while TXOP_REEDIT + TXOPF_PRINT can be used to print an XTEXT document that is currently open and displayed. You may specify the target printer (using standard Windows printer name syntax) by adding the following clause to the fmtdef parameter: Printer=name where name is the descriptive name of the printer, as it appears in the print manager control panel applet. If there are other clauses in the fmtdef parameter, terminate this one with a "~" or ",". If no printer is specified, the current default printer is used. You may also request to have XTEXT display a standard printer select dialog by setting the flag TXF8_SEL_PTR_DLG (&h10000000) to the txc'flags8 field in the txtctl parameter. If the printer dialog option is not select, then printing via TXOP_CREATE + TXOPF_PRINT will not display the XTEXT. The XTEXT.DEF file has been updated with the new symbols. Note that for ATE, this feature requires updating both the server and ATE client. 2. --- XTEXT enhancement: Margin, papersize and orientaton specifications. New fields added to TXTCTL (see below). These are mainly only of of interest in TXF_PRINTVIEW mode. MAP1 TXTCTL ... MAP2 TXC'HFLAGS2 ,B,4 ! 246 HTML flags MAP2 TXC'MGNLEFT ,B,2 ! 250 left margin (twips) MAP2 TXC'MGNRIGHT ,B,2 ! 252 right margin (twips) MAP2 TXC'MGNTOP ,B,2 ! 254 top margin (twips) MAP2 TXC'MGNBOTTOM ,B,2 ! 256 margin margin (twips) MAP2 TXC'MGNHEADER ,B,2 ! 258 header margin (twips) MAP2 TXC'MGNFOOTER ,B,2 ! 260 footer margin (twips) MAP2 TXC'PAPERSIZE ,B,2 ! 262 paper size (see DMPAPER_xxx) MAP2 TXC'ORIENT ,B,1 ! 264 orientation (0=dflt, 1=port, 2=land) MAP2 TXC'UNUSED ,B,1 ! 265 (266 total) Note: the original size of TXTCTL was 256, so it may be that existing applications or functions have a 256 byte limit which would make the fields starting from TXC'MGNBOTTOM be invisible. For the the same reason, if using XTEXT from ATE, both server and client would need to be at 5.1.1149 or higher in order for all the new fields to work. 3. --- GDI printing bug fix/refinement: The width parameter in the //SETFONT statement now works more precisely and reliably with fixed pitch fonts, across all font families, printers and resolutions. Previously, certain fonts (most notoriously Courier) didn't "behave" very well. And in addition, since the individual cell width was being rounded to the nearest integer number of pixels, small adjustments to the width were often not having the desired effect with lower printer device resolutions. Now, the cell width is interpolated to 1/8 of a pixel, resulting in fine control even with 100 DPI (e.g. fax) devices. COMPATIBILITY WARNING: This "fix" could possibly result in a small change in the horizontal character spacing of existing printouts. The change will probably be small, and will always represent a correction, but it is possible that having worked out precise spacing by trial-and-error, you may need to make adjustments after this fix. (After considerable soul-searching and public comment, we decided that since width is a relatively new parameter, rarely used, that the likelihood of this fix actually improving the spacing of existing reports was many times greater than the chance of it making a report worse. But if you use the width parameter to fine tune the fixed pitch spacing of a very precise form, and especially if you used trial-and-error rather than math to figure out the ideal width, you may need to take another look. (The upside is, anyone affected by this would have been at risk of their repors looking different on different printers; so even if you have to make an adjustment, the report will now print consistently across devices.) See the following forum thread for a more detailed discussion: http://www.microsabio.net/ubb2/ultimatebb.cgi?ubb=get_topic;f=1;t=000103 4. --- GDI printing bug fix/refinement: //SETVMI vertical spacing is now interpolated to fractional pixels, rather than being rounded to the nearest pixel. This corrects a problem where, depending on the VMI factor and resolution, you might have ended up with vertical spacing that was off by a fraction of a pixel. That doesn't sound like much, but by the time you get to the bottom of a page (60+ lines) a half pixel error multiplies to 30 pixels, which might be as much as an entire line. This problem typically showed up when switching between a laser printer (at 600 or 1200 DPI) and a PDF or FAX device at 100-300 DPI. And even then, it would generally have gone unnoticed unless you were using a mixture of GDI directives to draw boxes (which wouldn't have been subject to a per-line error accumulation) and regular print lines to fill them in. COMPATIBILITY WARNING: Existing printouts which used //SETVMI to set the vertical spacing necessary for printlines to line up with boxes drawn with GDI primitives may be affected by this (generally in a way that improves the alignment, unless you happened to have relied on the accumulated rounding error without realizing it). See the following forum thread for a more detailed discussion: http://www.microsabio.net/ubb2/ultimatebb.cgi?ubb=get_topic;f=1;t=000104 5. --- XTREE bug fix: re-entering a tree with XTROP_RESELECT and the XTF_NOREDRAW flag set was leading to a mismatch between the actual sorted state of the tree and the state as reported back to the application via XTR'COLUMNSORT() and XTR'SORTORDER(), which on a subsequent re-entry may have caused the sort order to change unexpectedly and inappropriately. ========================================================================== A-Shell Development Notes Version 5.1.1148.1 (11 May 2009) ========================================================================== 1. --- MX_FSPEC refinement: on error, it was setting the locpath parameter to the last processed filespec, leading some applications (that didn't check the returned status parameter) to assume it was a valid result. It will now be set to "" in case of error. ========================================================================== A-Shell Development Notes Version 5.1.1148.0 (07 May 2009) ========================================================================== 1. --- ATE enhancement: a new transport option, SSH, is now offered. SSH is similar to TUNNEL except: a) it doesn't require the telnet daemon on the server, nor it's port, typically 23, to be open; b) is uses ASHNET.DLL (1.2.108+) instead of ATETUNNEL.EXE / WODTUNNEL.DLL; c) the connection will appear to the host as originating from your PC or local router, rather than from localhost; d) there is only one login operation, and you won't ever see the server prompts for it. (If there is a problem with the login, a local Windows dialog will display, allowing you to correct your name/password). In most cases, the new SSH option will be preferable to the TUNNEL option, but the differences may not be that important to many users. (And there may be a shake-out period during which some SSH glitches may have to be resolved.) ATECFX.SBX has been updated to 4.1(132) to support the new SSH transport option. Note that when the SSH transport is selected, the Telnet Port, Local Tunnel Port, Verbose Tunnel Interface, and "Wait for Login Prompt" fields are disabled, as they don't apply. 2. --- ATE enhancement: When using the SSH transport, if the login fails because of a problem with the name or password, a dialog will display, allowing you to adjust them and retry or cancel. If you make adjustments and succeed to connect, then your updated name and password will be saved in your profile, UNLESS those fields were blank in the profile initially. The theory here is as follows: in more secure environments, including those where the password is forced to be changed frequently, the name might be stored in the profile, but the password left blank, forcing it to be entered interactively on each connection. Or, if multiple users share a PC and/or connection profile, you might leave them both blank to force both to be entered each time. In either of these cases, the fields which are initially blank in the profile will be left blank. However, if you store a non-blank name and/or password in the profile, and there is a problem with one, and you make the necessary corrections while logging in, then your corrections will be saved in the profile. The special value "[init]" may be entered into the server name, login name, and/or login password to cause it to prompt on the first try, and then to save the values you enter. (Actually, any values will give you the same effect, except for the initial attempt to connect. ATE recognizes the "[init]" and prompts immediately, before trying to connect.) If the login name is updated, the FTP name will also be updated if it was non-blank in the profile and originally matched the login name, or if it was set to "[init]". Likewise with the FTP password. (Usually the login and FTP credentials are the same, but it is possible that you want the server to always prompt for FTP login (in which case leave those fields blank), or they are simply different (in which case you probably don't want the FTP credentials to change just because the login credentials did.) 3. --- ATE enhancement: When the server and client PC clocks are out of sync by more than 24 hours, the warning message is now slightly more helpful (showing the server date and explaining that ATE will have to operate in eval mode until the clocks are re-synchronized.) The message text may also be configured by editing the system message files. 4. --- GUI bug fix: The ATE "tokenize" (GOP2_GUISPCINDENT) option was falsely displaying text tokens consisting of a minus-sign followed by a single digit as "--". 5. --- Windows printing refinement: an internal limit of 50 characters for the descriptive/device name of a printer has been increased to 100. 6. --- ATE licensing refinement: Improve the handling of the situation where the client and server clocks are more than 24 hours out of sync. Previously it reported the fact but may have left users confused about its connection with the failure to license the ATE client. The new message is more clear, includes the server's date, and can be customized through the 003,xxx entries in the SYS:SYSMSG.lng file (where xxx is 010, 011 and 012). Also, once this error occurs, the server no longer retries, which was further confusing things. 7. --- PDFX bug fix: Email.Content text was being reverse truncated at the position of a ":" character, when using Type 4. ========================================================================== A-Shell Development Notes Version 5.1.1147.2 (05 May 2009) ========================================================================== 1. --- ATE file transfer bug fix: When transferring binary files through the ATE auxiliary port, using TAB(-10,AG_SPOOLCFG), or a wrapper such as ATEAPX.SBX (or equivalent), the target file was getting an extra garbage byte on the end when the original size was one less than a multiple of 1536. In most cases the extra byte was harmless, but it was causing ATEAPX.SBX to report file transfer verification failure, and may have led to other more subtle problems. ========================================================================== A-Shell Development Notes Version 5.1.1147.1 (01 May 2009) ========================================================================== 1. --- Follow-up correction to "XTREE refinement" in 5.1.1147 (item 2): it was not allowing certain editing keys, such as RUB and BACKSPACE. ========================================================================== A-Shell Development Notes Version 5.1.1147.0 (01 May 2009) ========================================================================== 1. --- Windows printing enhancement: The PRTCOPIES= printer init file parameter is now supported for Windows GDI (non-passthrough) printing. However, unlike in the UNIX world where the default is FALSE (meaning we tell the system spooler to generate the copies), in A-Shell/Windows the default has effectively been TRUE (meaning that A-Shell generates the individual copies, sending each one individually to the printer.) So the new option (of asking the printer driver to generate the copies) is achieved by setting PRTCOPIES=FALSE. Background: printer driver support for multiple copies has been historically unreliable, to the point that we just decided it was easier and more dependable to generate the copies locally within A-Shell. And in the Windows world, the performance penalty for this is usually quite negligible. However, there are some cases where the difference between having A-Shell generate the copies and having the printer driver generate them is significant. In such cases, you can now add PRTCOPIES=FALSE to your printer init file. Note that this is ignored for PASSTHROUGH printing (since Windows drivers do not support such functionality in "raw" mode), and it will be over-ruled if A-Shell detects any problem with the capability (i.e. if the driver doesn't indicate support or returns an error when we try to set the copies.) 2. --- XTREE refinement: Editable cells using cformat codes "#.", "#-", and "#-." (numeric with decimal, negative or both) were allowing non-numeric characters to be entered while editing. This loophole is now closed, although it is still possible to pre-load or display non-numeric data in such cells. 3. --- Windows / APEX bug fix: some GDI files with a large number of //MOVETO commands (and a correspondingly large number of text lines per page) were fooling APEX into thinking the pages were overflowing, causing it to overstate the number of pages (on the APEX title bar). 4. --- XTREE bug fix: Numeric editable cells with custom cell background colors were losing their color after editing. ========================================================================== A-Shell Development Notes Version 5.1.1146.2 (23 April 2009) ========================================================================== 1. --- HTTP.SBR bug fix: Remove dependency on AshNet_FTP routine which was causing an "unable to link" error if the version of ASHNET.DLL was less than 107. 2. --- ATE adjustment: default for the "GUI tokenize" option is now OFF within ATE itself, even though it is ON within the ATE configuration dialogs. Even though this seems illogical, it only affects sites who upgrade from ATE 5.0 to 5.1 without going through the ATE configuration dialog. (Since the default was OFF in 5.0, it makes sense to preserve that in 5.1 with existing profiles that have not been edited. (This probably only affects FMC.) ========================================================================== A-Shell Development Notes Version 5.1.1146.1 (21 April 2009) ========================================================================== 1. --- *** WARNING: COMPATIBILITY CHANGE *** All of the VUX (VUE function key translation files) had an incorrect translation for Shift-F5. They were returning ^_Q (toggle insert) instead of ^_U (clear block). Presumably this is a benign bug fix, but if you were somehow counting on the prior translation, you may want to retrieve a backup copy of your VUX files and/or re-adjust them using FIXTRN. 2. --- XTREE HOME/END key refinement. The new XTF2_HOME_CTRL and XTF2_END_CTRL flags (see 1146.0 below), when used in an editable tree where XTF_HOME and/or XTF_END are not set, allows HOME and END to, in some types of editable cells, navigate to the first / last editable cell on the current line. By "some types" we mean essentially any kind of editable cell except one that allows you to directly edit the contents of (i.e. a standard editable text cell), since in the latter case, HOME and END are captured by the edit box itself to move the cursor to the beginning and ending of the cell, rather than to move between cells. But for checkboxes, radio buttons, read-only cells, etc., these new keys provided yet another navigational shortcut for power users. Note that for convenience and perhaps clarity, a new symbol has been defined in XTREE.DEF: define XTF2_NAVCOL = &h00000003 ! (XTF2_HOME_CTRL+XTF2_END_CTRL) Also note that these flags have no effect in non-editable situations, provided the keys are not enabled as exit keys (via XTF_HOME / XTF_END). If they are enabled as exit keys, then the XTF2_NAVCOL flags reverse the action of the simple keys and the keys with Control+. In other words, when set, Control+HOME will navigate to the first row, while HOME will exit; otherwise, Control+HOME exits and HOME navigates. 3. --- INFLD GUI bug fix: The default INFLD TYPE codes (set via SBR=INFDEF:xxxx or SET INFDEF) were not being used when redisplaying the control after editing or in display mode. For the most part this didn't matter, but it was noticeable in certain circumstances (like when the default TYPE codes included "||F", and the font scale factor was <> 0, and the force fixed pitch font option was not selected). Note: in ATE environments, this patch applies to the server side. 4. --- Compiler bug fix: (edit 434) The enhanced AS clause support (see 1145 below) allowing symbols to be use for parameter sizes (e.g. "a as X MAX_A") was only working for the passed parameters (i.e. those within the parentheses) and not for the final "AS " clause which determines the return type/size of the function. (Essentially the size was being ignored if expressed as a symbol, and the default size was used instead). 5. --- APEX refinement: To reduce the possibility of the saved/restored preview window size being too small or oddly placed to easily spot it, the minimum size has been increased to 250x200 pixels, and if the saved position is more than 10% outside the current extended desktop, we use a default size/position on the main monitor, rather than just sliding it over to the nearest visible position on the virtual/extended desktop. (The theory here is that the previously saved window position doesn't match the curent desktop/monitor configuration, then the environment has changed and there is probably no value in trying to preserve the last known position; better to restart with conservative defaults in that case.) ========================================================================== A-Shell Development Notes Version 5.1.1146.0 (19 April 2009) ========================================================================== 1. --- ***** WARNING: COMPATIBILITY CHANGE ***** XTREE change to handling of HOME and END keys. We are now reverting back to the way these keys were handled prior to 5.1.1133 (when a change was made such that the XTF_HOME and XTF_END flags causes HOME and END to exit (without requiring the Control key to be pressed). Although that change seemed like a good idea at the time, it has apparently caused a major problem in at least one app that was counting on the old behaviour and just discovered the new behaviour. After lengthy and heated debated, we made the decision to roll back the behavior and introduce a pair of new flags to allow the behavior from 5.1.1133 thru 5.1.1145.5 to be continued. Note that if you don't use the XTF_HOME or XTF_END flags, this change will not affect you. Also note that for ATE environments, the change is only on the ATE side. To implement the new flags, since we were out of bits in the XTREE FLAGS parameter, we now support a new expanded form of the parameter: MAP1 XFLAGS'X MAP2 XFLAGS,B,4 ! original XTF_xxx flags MAP2 XFLAGS2,B,4 ! new XTF2_xxx flags If you don't care about the new XTF2_xxx flags, you can continue to use the original form of the FLAGS parameter (passing it as a B,4 or F,6). But if you want to use the new XTF2_xxx flags, you must switch to the new format as shown above. The new flags are defined in the updated XTREE.DEF as: define XTF2_HOME_CTRL = &h00000001 define XTF2_END_CTRL = &h00000002 (The XTF2_ prefix is meant to remind you that the above flags relate to the second flags longword, i.e. XFLAGS2 in the map above.) The XTF_xxx_CTRL flags, as their names hopefully suggest, affect the behavior or need for the combination of the Control key with the xxxx (HOME or END) key. When set, and assuming that the corresponding XTF_HOME and/or XTF_END are also set, then these bits reverse the behavior of the Control key in conjunction with the HOME / END keys. Thus, HOME and END without the Control+ will be interpreted as exit keys, while Control+HOME/END will be interpreted as a navigation request to the first/last row. WARNING: Older versions of A-Shell will not recognize this new format of passing XFLAGS as an unformatted structure, causing XTREE to fail to understand any of your flags. If that presents a problem, the workaround is to map the FLAGS argument as an array of 2 B,4 elements, e.g. MAP1 XFLAGS(2),B,4 In that case, pass XFLAGS(1) for the flags argument and XTREE will just assume that you passed an array of 2 elements, with the 2nd element containing the XTF2_xxx flags. ATE, however, does not present any particular compatibility issues. Versions prior to 1146 simply won't see the XTF2_xxx flags. So, if you have only one or a few servers to update, but uncountable ATE clients, then it may be better to update those servers and use the XFLAGS'X format, since it is more extensible and A-Shell doesn't have to assume that there are at least 2 elements in the array. 2. --- ATE disconnect improvement: in some cases, using File > Disconnect while in a GUI input operation was causing the "|D" to appear in the input control, rather than disconnecting. ========================================================================== A-Shell Development Notes Version 5.1.1145.5 (18 April 2009) ========================================================================== 1. --- GUI bug fix: the height of INFLD controls on the main window, when the "Force edit box height to match combo" option was checked, and the Proportional font scale factor was > 0, was incorrect. Instead of calculating the combo height based on the specified percentage of the coordinate cell (aka main window "grid") size, it was basing it on the specified percentage of the normal combo height. ========================================================================== A-Shell Development Notes Version 5.1.1145.4 (15 April 2009) ========================================================================== 1. --- GUI bug fix: right clicking on a control prior to any XTREEs being created was causing a GPF. 2. --- XTREE bug fix: remove the extra blank row that was inadvertently added to each XTREE by the 1145.3 patch. ========================================================================== A-Shell Development Notes Version 5.1.1145.3 (15 April 2009) ========================================================================== 1. --- XTREE bug fix: close GPF loophole if ADDCNT < 0 2. --- STRTOK (and possibly other SBR) bug fix: close GPF loophole when a null string is passed back to a non-string parameter. ========================================================================== A-Shell Development Notes Version 5.1.1145.2 (10 April 2009) ========================================================================== 1. --- FTP bug fix: Attempting to send a file to the root directory of a network drive (e.g. "\\server\share") was failing. Also, attempting to send a file to a non-existent subdirectory of a network drive was failing to create the directory, and thus failing to transfer. 2. --- STRTOK.SBR bug fix: close a loophole which, under some conditions, caused a GPF or segmentation fault when the source string was empty. (One doesn't normally try to tokenize an empty string, but it should still support it without failing.) 3. --- MX_WINSETTINGS bug fix: (Actually it's mostly a workaround to support a misunderstanding left by the documentation which didn't get updated properly.) Opcodes 2 (save) and 3 (load) should use the following syntax: xcall MIAMEX, MX_WINSETTINGS, op, file$, status However, the documentation didn't mention this and instead gave only the syntax for opcodes 0 and 1: xcall MIAMEX, MX_WINSETTINGS, op, id, value Since there is no specific "id" value corresponding to the filename, some people were trying to save the settings to the current ash file using: xcall MIAMEX, MX_WINSETTINGS, 2, 0, 0 But this was actually trying to save the settings to the file: \0.ash (In some cases, it was trying to make the file name be 0.00000, in which case it generally displayed a message box saying that it failed.) The refinement is that now, when the file$ argument is "0" or "", it is interpreted as meaning that you want to save to or load from the current settings file. ========================================================================== A-Shell Development Notes Version 5.1.1145.1 (09 April 2009) ========================================================================== 1. --- GUI dialog scaling bug fix: maximizing or otherwise scaling a dialog was not working properly when the original dialog grid height and width scale factors were not 100 to start with. If they were smaller, the controls were scaled too large (often going off the right edge of the dialog when maximizing). 2. --- Compiler bug fix (compiler edit 433): nested structure definitions were not being recognized when the first character of the referenced structure name was not capitalized. ========================================================================== A-Shell Development Notes Version 5.1.1145.0 (06 April 2009) ========================================================================== 1. --- Compiler/language enhancement: A new statement has been defined to redimension an array originally created with DIMX: DIMX VARNAM(SUB1,...,SUBn),, ... REDIMX VARNAME(SUB1,...SUBn) Notes: - The REDIMX statement must occur after the corresponding DIMX (both during compilation and at runtime). If the compiler sees the REDIMX first, it will report an unmapped variable. If the runtime sees the REDIMX first, it will report error 30 (redimensioned array - same error as you get when attempting to use DIMX a second time). - You cannot change the number of subscripts; you can only change the maximum value(s) of the subscript(s). - The REDIMX statement can not specify a variable type or size; thus you cannot change the original type or size. - The original contents of the array will be preserved ONLY if the all dimensions beyond the first (for multi-dimensioned arrays) are preserved. For example, if you start with DIMX A(P,Q,R), and then redimension using REDIMX A(X,Y,Z), the contents will be preserved only if Y=Q and Z=P (i.e. if the only dimension changed in the first dimension). - The MALLOC trace option will trace DIMX and REDIMX memory allocations (along with most other memory allocations/deallocations), making it a useful debugging tool. 2. --- Compiler enhancement: The parameter type "AS" clause in function and procedure headers now allows symbols to be used in place of literal values for the sizes of the parameters. To accomplish this, leave a space between the type code and the symbolic size. For example: Function Fn'FmtName$(first as s MAX_FIRST, last as s MAX_LAST) as s MAX_NAME (The space after the type code is necessary since otherwise "sMAX_FIRST" would appear to be the name of a structure.) Previously, in order to accomplish the same thing, you had to create a structure to contain the string. Otherwise, you were reduced to hard- coding the parameter sizes, thus inviting bugs when you increased the maximum size of the calling parameter but forgot to update the function. ========================================================================== A-Shell Development Notes Version 5.1.1144.2 (02 April 2009) ========================================================================== 1. --- AG_INFLD was complaining about an improperly terminated setdef when the TYPE "{" (charset) code was used. ========================================================================== A-Shell Development Notes Version 5.1.1144.1 (01 April 2009) ========================================================================== 1. --- EZTYP refinement: when running in an ATE GUI environment (with the TYPE code |G added to the SBR=INFDEF: list to automatically use the GUI form of INFLD), the combination of GUI and non-GUI raw character input in the EZTYP routine was causing undue slowness, at best, and dropped characters at worst. (One symptom was that holding down the up arrow was now scrolling reliably upward, but was causing the display to jump up and down erratically.) Note that this fix only applies on the server side. 2. --- ATE refinements in directing input (and especially typeahead) to the correct place (i.e. either the server or the client) when using GUI operations. (In a normal GUI program, virtually all of the real keyboard characters should be consumed on the client side, rather than sent directly to the server, but the reverse is true if the server uses any non-GUI input routines.) Previously, tiny timing gaps were allowing typeahead characters to get sneak through when moving from one GUI input operation to the next, which sometimes led to confusion or dropped characters. ========================================================================== A-Shell Development Notes Version 5.1.1144.0 (31 March 2009) ========================================================================== 1. --- ATSD refinement: ATSD.EXE 5.1.107 supports a new command line switch, "-proto2", which enables a new protocol for launching the A-Shell child sessions. While the old protocol was fine in 99% of the cases, some NIC drivers did not support it, with the result that sessions would appear to connect and then instantly disconnect. When the -proto2 command line switch is passed to ATSD.EXE (either via the ATSDSRV.INI or a shortcut), it now uses Microsoft-recommended WSADuplicateSocket protocol. This protocol requires ASHW32.EXE 5.1.1144.0 or higher, although only for the ASHW32.EXE which is launched on the server side. (It does not affect or depend on the telnet client version.) 2. --- A-Shell/Windows now supports the -proto2 protocol in ATSD as described above. (It continues to support the older protocol as well.) 3. --- New AG_TRACE (76) command allows the application on the server to clear, set, or query the trace flags on the ATE client in real time. This is mainly useful for debugging, but in such a case, can be very handy since it is not often practical to arrange for users to change the trace flags on individual copies of ATE. Syntax: SIGNIFICANCE 11 ! (needed to avoid exponential notation) MAP1 OP,B,1 ! 0=clear, 1=set, 2=query MAP1 TRFLAGS,B,4 ! Flags to clear, set or query ? TAB(-10,AG_TRACE);OP;",";TRFLAGS;chr(127); if OP=2 then ! for query, input the set of flags input "",TRFLAGS endif In all cases, start by setting TRFLAGS to be the combination of one or more flags that you are interesting in clearing, setting, or querying. You can also specify them directly, using the TROP_xxxx symbols from the ashell.def file. For example, to set the XTREE and XDEBUG flags: ? TAB(-10,AG_TRACE);"1,";(TROP_XTREE or XTROP_XDEBUG);chr(127); To specify all flags, you can use the shorthand -1: ? TAB(-10,AG_TRACE);"2,-1";chr(127); ! query all flags input "",TRFLAGS ! for query, retrieve results ? "Current ATE trace flags: ";Fn'Dec2Hex$(TRFLAGS); ! display in hex if (TRFLAGS and TROP_ATE) then "ATE trace set" if (TRFLAGS and TROP_XTREE) then "XTREE trace set" etc. ========================================================================== A-Shell Development Notes Version 5.1.1143.5 (30 March 2009) ========================================================================== 1. --- XTREE enhancement: new advanced COLDEF clause may be used to force XTREE to exit at the completion of a drag/drop operation: DropExit=### ### specifies the desired exitcode. Note that the exitcode will be -### (i.e. DropExit=88 will return exitcode -88 on a drag/drop). (Same syntax as SelChgExit=###). 2. --- XTREE bug fix: XTF_DRAGDROP in array mode was returning garbage (data from the tree) when XTF_SORT was not specified. ========================================================================== A-Shell Development Notes Version 5.1.1143.4 (28 March 2009) ========================================================================== 1. --- ATE refinement: minor adjustment to TCP disconnect logic, hopefully to allow for cleaner client-initiated shutdowns. ========================================================================== A-Shell Development Notes Version 5.1.1143.3 (28 March 2009) ========================================================================== 1. --- Compiler bug fix: (compiler edit 430) The scope of PRIVATE variables is supposed to be limited to the ++include module in which they are defined. But in fact, it was extending to other ++include modules with the same name (but different extension). So for example, a PRIVATE var defined in i1.bsi was also visible in i1.inc. 2. --- XTREE bug fix: setting Dspwid for the pseudo column (default) was setting the deafult minimum width rather than the default display width. Also note that because of special considerations affecting the first and last display columns, they may not be affected by the default Dspwid. ========================================================================== A-Shell Development Notes Version 5.1.1143.2 (26 March 2009) ========================================================================== 1. --- APEX bug fix: new 2.0.0.1 version of the SftPrintPreview_IX86_A_2.0.dll fixes a problem causing the preview to crash under W2000, W98 and ME when the GDIPlus module had not been installed (typically via Windows Update). ========================================================================== A-Shell Development Notes Version 5.1.1143.1 (23 March 2009) ========================================================================== 1. --- AUI_CONTROL refinment: CTLOP_CHG with the MBST_POS state flag to resize or reposition a control now works with dialogs. Note that resizing the dialog this way doesn't not automatically resize of reposition the controls within the dialog (relative to the dialog upper left corner). 2. --- ASHNET.DLL 1.0(107) now supports XHTTPF_REQHEAD flag to request the HTTP header of the target URL. ========================================================================== A-Shell Development Notes Version 5.1.1143.0 (23 March 2009) ========================================================================== 1. --- MX_SHELLEX enhancement for server side of ATE: New waitflag bit +4 disables the normal 10 second time out waiting for the ShellExecute operation to complete. Normally 10 seconds is more than enough time to determine whether the launch was successful or not, but there are some cases, most notably under Vista when the launch requires the user to confirm "elevation", that the server was otherwise timing out while ATE was still waiting for the ShellExecute to return. In such as case, an unreliable error status was often being returned, and then when the command finally did return, the normal response code was ending up in the keyboard buffer, possibly confusing the application. Specifying the +4 flag should not have any effect on older versions of A-Shell or under non-ATE situations. Note that wait is independent of the existing waitflag option +1, which suspends ATE until the launched application completes. +4 only waits until the program is launched, not until it is closed. 2. --- ATE server-side protocol enhancement: New general purpose status code -15 indicates that ATE failed to respond to the server request within the normal time limit (5 seconds for most commands, 10-15 for a few). As described above, sometimes commands that "should" respond almost instantly, will take a long time, either because ATE is "locked up", or there is some other Windows hangup, such as waiting on "elevation" or some other critical event. In such cases, if the command normally returns a numeric status code, we now return -15 to indicate time out. These include: AUI_MENU AUI_ENVIRONMENT AUI_HTMLHELP MX_SHELLEX MX_MKDIR MX_FILESTATS MX_GDICALC MX_WINSETTINGS MX_SHORTCUT MX_CHKPCNET 3. --- AMOS-to-native filespec conversion enhancement: files with names longer than 10.3 or containing more than 1 "." are now recognized as native. Previously, if there were no other clues, these were assumed to be AMOS specs, but that resulted in them being truncated at 10.3. 4. --- MX_FILESTATS bug fix: Under UNIX, when the FOPENS trace was set and the specified file didn't exist, A-Shell aborted with a segementation fault. 5. --- AG_SPOOLCFG enhancement: when using this method to transfer binary files, ATE now displays a progress bar that visually indicates the progress to completion. (For other aux port printing, where ATE doesn't know the number of bytes to be received, the progress bar just shows continuous activity without indicating actual progress.) 6. --- MX_SHELLEX documentation fix: Aside from the -15 return code for timeout, (which is actually a new code - see #2 above), applications should be aware of return code 1223, which indicates that the user was given some kind of prompt to enable or accept the launch of the program (such as with Vista 'elevation'), and the user chose to cancel rather than allow the launch. 7. --- ATE configuration dialog cleanup (version 128): - Login text tip now helpful - FTP port now defaults correctly when protocol changes. - Use Windows edit mode (|K) ========================================================================== A-Shell Development Notes Version 5.1.1142.7 (21 March 2009) ========================================================================== 1. --- LMASCB.SBR was falsely reporting an overflow condition when the file data completely filled a string field, without room for the trailing null. ========================================================================== A-Shell Development Notes Version 5.1.1142.6 (20 March 2009) ========================================================================== 1. --- AUI_CONTROL bug fix: The MBF2_STICKY bit was not working properly when the parent window was on a secondary monitor with negative coordinates. ========================================================================== A-Shell Development Notes Version 5.1.1142.5 (20 March 2009) ========================================================================== 1. --- APEX bug fix (minor) : when printing a file whose name is of the form *#.apf, *#.exc or *#.csv, it was supposed to just print it without creating a new "serialized" apf. This was only recognizable as a problem when re-printing files from the APEX retention directory which for which there were corresponding auxiliary files of the same name. ========================================================================== A-Shell Development Notes Version 5.1.1142.4 (19 March 2009) ========================================================================== 1. --- ISAM 1.1 bug fix: there was a small chance (approximately 1 in 10K) that on any given key deletion, you would get a bogus ERF 35 (index smashed) error. ========================================================================== A-Shell Development Notes Version 5.1.1142.3 (18 March 2009) ========================================================================== 1. --- AUI_CONTROL bug fix: an unresolved side-effect of the conversion to millicolumns (5.1.1139) was allowing TAB(x,y) to delete a control positioned at (x,y) even if that control was in a non-autoparent dialog. (Normally, TAB(X,Y) should only delete unprotected controls which start at that position within the main screen or within the autoparent dialog.) ========================================================================== A-Shell Development Notes Version 5.1.1142.2 (17 March 2009) ========================================================================== 1. --- AUI_CONTROL refinement: 1141.2 patch to preserve static control background color value is now limited to BGC values with the +64 (override) flag or which are in RGB format. (Values 0-15 no longer override the tab control background color.) 2. --- XTREE column header alignment bug fix: the 1142 update had a side effect of setting the center or right justify option on all the column headers if the first column header had it. 3. --- XTREE refinement: Column format "uu" (see 1142.0) now automatically exits on ENTER, rather than acting like TAB, as it does in most other cell navigation situations. (The theory here is that uu is mainly intended for people who prefer the keyboard to the mouse, for whom ENTER would be the most natural way to "select" (i.e. exit from) the current cell. ========================================================================== A-Shell Development Notes Version 5.1.1142.1 (16 March 2009) ========================================================================== 1. --- Windows printing refinement: the printer selection dialog was being displayed as a child of the main A-Shell window. In cases where the application was really running from a dialog, this allowed the user to accidentally cover up the printer selection dialog with the application dialog, leading to what appeared to be a hung state. 2. --- .DATE (dot variable) fix: Overflow from the year (> 100 since the year was an offset from 1900) was causing the day value to be incremented by one. (March 16, 2009 was appearing as 31709 instead of 31609.) 3. --- .YYMMDD (dot variable) fix: YY now limited to 00-99, so March 16, 2009 shows as "090316" instead of "1090316". ========================================================================== A-Shell Development Notes Version 5.1.1142.0 (16 March 2009) ========================================================================== 1. --- APEX printing refinement: when the last used-printer was removed, the next APEX preview using the PROMPT printer was trying to use the last (now missing) printer, leading to an error message that users (and even dealers) where having a hard time figuring out how to resolve. It should now revert back to the Windows default printer in such a case. (Note that for user-friendliness reasons, the preview does not prompt the user to select a printer before previewing, even though the preview is technically tied to the selected printer metrics. Instead, it uses the last-used printer as a default, and only prompts when/if the user selects to actually print.) 2. --- XTREE enhancement: New cformat (column format code) "uu" - works just like "u" (editable readonly) but displays only a frame around the cell (as it always did for checkbox cells), rather than overlaying the cell with an edit or combo control. (This is just an aesthetic variation.) 3. --- XTREE enhancement: new field added to XTRCTL structure to support flags relating to column header style: ... MAP2 USRCFG,B,1 ! user save/restore cfg flags - XTUCFG_xxx MAP2 HEADERSTYLE,B,1 ! col header style flags - XTHSF_xxx MAP2 UNUSED,X,15 ! (was 16) The style flags are: !***[115] XTR'HEADERSTYLE flags define XTHSF_VCENTER = &h00 ! [115] horizontal alignment define XTHSF_TOP = &h01 ! [115] top alignment define XTHSF_BOTTOM = &h02 ! [115] horizontal alignment define XTHSF_NOTBTN = &h20 ! [115] headers are simple titles, not buttons define XTHSF_BTNSTAY = &h40 ! [115] header buttons stay down when clicked (if not NOTBTN) define XTHSF_DISABLED = &h80 ! [115] header disabled, cannot be clicked The _VCENTER, _TOP and _BOTTOM flags control the vertical alignment of the header text. (The default is XTHSF_VCENTER.) The _NOTBTN flag causes the column headers to act/look like ordinary text cells, rather than as buttons. (This will eliminate the highlighting of the column headers in editable trees, which is sometimes distracting.) The last two flags are somewhat obscure, but are documented here for comleteness. The _BTNSTAY flag causes the header buttons to stay in the down position when clicked. (Only effective when not sorting, so this is of minimal value also.) The _DISABLED flag disables the click-sensitivity of the headers (which effectively disabled sorting, so is more or less subservient to the XTF_SORT flag). (XTREE.MAP, XTREE.DEF, XTREE.SDF updated accordingly) 4. --- XTREE refinement: when navigating with the up/down arrow among editable cells, it now stops at the first or last editable cell in the column. Previously, it would jump out of editing mode back into selection mode if the last cell was not editable. 5. --- XTREE enhancement: a new flag bit in the XTR'NFSELSTYLE variable can be used to remove the dotted "focus rectangle" which normally appears around the selected item. This is now defined, along with the rest of the XTR'NFSELSTYLE values in XTREE.DEF as: !***[115] XTR'NFSELSTYLE flags define XTNFS_GRAY = 0 ! [115] inactive sel bar is gray define XTNFS_BLUE = 1 ! [115] inactive sel bar is blue define XTNFS_FRAME = 2 ! [115] inactive sel bar is frame define XTNFS_NONE = 3 ! [115] no inactive sel bar define XTNFS_NOFOCRECT = &h80 ! [115] don't display focus rect (dotted) ========================================================================== A-Shell Development Notes Version 5.1.1141.2 (14 March 2009) ========================================================================== 1. --- AUI_CONTROL bug fix: colored static text background colors were not working within TAB controls. ========================================================================== A-Shell Development Notes Version 5.1.1141.1 (09 March 2009) ========================================================================== 1. --- AUI_CONTROL MBF_TAB refinement. The adjustment to increase the max length of CTEXT in 5.1.1140 had the side effect of stripping the original CTEXT contents to the first tab label (i.e. up to the first tilde) during the parsing/tokenizing of the TAB text. In most cases this had no consequence, but to avoid the possibility that an application may have saved or reused that CTEXT contents after creating the TAB, the contents are now preserved. (Note: only affected local A-Shell/Windows, not ATE.) ========================================================================== A-Shell Development Notes Version 5.1.1141.0 (08 March 2009) ========================================================================== 1. --- SQL.SBR compatibility adjustment: Windows MySQL connector renamed from ASHMYSQL.DLL to LIBASHMYSQL.DLL. 2. --- MX_FILESTATS bug fix: addition of the new version and hash options in 5.1.1139 was causing problems with earlier versions of ATE. The extra parameters are now ignored on the server side when ATE < 1139. 3. --- New AG_XFUNCS (75) command (string variation of AG_XFUNC) ? TAB(-10,AG_XFUNCS);"sbxnam,arg1,...,argn);chr(127); input line "", RESPONSE$ The concept and arguments are the same as for AG_XFUNC, with the only difference being that the routine called the ATE side ("sbxnam"), must return a string result (as if for XFUNC$()) rather than a numeric result. ========================================================================== A-Shell Development Notes Version 5.1.1140.5 (07 March 2009) ========================================================================== 1. --- MX_CHKPCNET bug fix: was returning -1 (not available) except under ATE. ========================================================================== A-Shell Development Notes Version 5.1.1140.4 (06 March 2009) ========================================================================== 1. --- Compiler bug fix: use of sizeof() within functions and procedures was, in some cases (apparently only Linux) returning the size of a previously referenced variable. (Note that the problem was affected the hash code of the affected RUN file.) 2. --- COMPIL.EXE 5.1.429 (standalone compiler for The Editor) updated per above. ========================================================================== A-Shell Development Notes Version 5.1.1140.3 (05 March 2009) ========================================================================== 1. --- Further refinement of INFLD GUI bug fix described in 1140.2, which was still leaving some combo box drop downs too short. 2. --- AUI_CONTROL bug fix: CTLOP_INFO was truncating the returned control text at 2 bytes. (Problem introduce in 1140.0.) 3. --- AUI_CONTROL bug fix: dialog centering (MBST_CENTER, etc.) was not working properly on secondary monitors unless the tops of the monitors were aligned. ========================================================================== A-Shell Development Notes Version 5.1.1140.2 (04 March 2009) ========================================================================== 1. --- INFLD GUI bug fix: Some combo boxes were failing to drop-down properly under W2000. (The total height of the drop-down was about 1 pixel, making it look like just an underline.) Problem was introduced in 1139.3. ========================================================================== A-Shell Development Notes Version 5.1.1140.1 (03 March 2009) ========================================================================== 1. --- CGIUTL enhancement: the 16K limit on the size of a single expanded line of the template HTML file (using opcode 3 or 6) has been lifted. (It may take some ingenuity to create such long lines, but apparently some A-Shell developers feel up to the challenge.) The only limits which remain are that 32K for the length of a template line prior to variable substitution and 256 total substitution variables (which may be distributed over 96 XCALL parameters). Also, increase the default maximum size of the parameter buffer passed by the web server to A-Shell from 4K to 16K (applies only in the case where the web server does not support the CGI standard by defining the CONTENT_LENGTH environment variable; IIS seems to fall into this category.) 2. --- AUI_CONTROL bug fix: MBST_CENTER with MBF_ALTPOS dialogs was causing dialogs to be reduced drastically in width. (Introduced in 1139.) 3. --- AUI_CONTROL enhancement: New cstate flags MBST_HCENTER (&h00800000) and MBST_VCENTER (&h01000000) allow controls to be centered just horizontally or just vertically. (Specifying both is equivalent to MBST_CENTER, which should now probably be deprecated to free up a bit, although it will be a long time before we could expect to be able to reuse the bit.) 4. --- AUI_CONTROL enhancement: Although centering is mainly intended for dialogs, it now works better for controls within dialogs. (In particular, the new MBST_HCENTER flag might be useful for centering a single button at the bottom of a dialog.) ========================================================================== A-Shell Development Notes Version 5.1.1140.0 (02 March 2009) ========================================================================== 1. --- AUI_CONTROL enhancement: increase the limit on size of the CTEXT parameter, from 1024 bytes, to approximately 3500 bytes (The actual limit is about 4K, less the space used for all of the other AUI_CONTROL parameters.) The new larger limit will be mainly useful with very large TAB controls (i.e. having many tab panes). 2. --- A-Shell/SQL interface ported to Linux. 3. --- EZ-SPOOL bug fix: After using the EZVUE preview from the EZ-SPOOL, the screen was not being restored properly. 4. --- Installer bug fix: the SYS:LP0.INI file was being over-wrtten by the generic one during an install/update. ========================================================================== A-Shell Development Notes Version 5.1.1139.9 (02 March 2009) ========================================================================== 1. --- MIAMEX, MX_COPYFILE bug fix (Windows) : CPYF_SETRO and CPYF_CLRRO were not being respected in conjunction with the CPYF_MOVE option. ========================================================================== A-Shell Development Notes Version 5.1.1139.8 (02 March 2009) ========================================================================== 1. --- AUI_CONTROL bug fix: controls were ending up one pixel less wide than before the onset of millicolumns (in 1139). This was mainly noticeable in INFLD controls using ||f where the extra pixel was sometimes enough to cause the last character to be truncated. ========================================================================== A-Shell Development Notes Version 5.1.1139.6 (27 February 2009) ========================================================================== 1. --- GDI printing refinement: The printing initialization commands XOFFSET, YOFFSET, XORIGIN, and YORIGIN, did not previously work in the TEXT mapping mode. Now they do. 2. --- MX_CLIPBOARD enhancement: Previously, the amount of text that could be copied to the clipboard was limited to about 3K. While this remains the case when copying from screen coordinates, or when running under ATE (opcodes 2 and 3), for opcode 1 in local Windows mode (copying a string supplied by the application), the amount is now only limited by available Windows resources. 3. --- AUI bug fix: refine prior fix in 1137.3 relating to selection bar handling and edit mode; was causing an excessive flash and inappropriate reversion to the full selection bar when editable cells lost focus. ========================================================================== A-Shell Development Notes Version 5.1.1139.5 (26 February 2009) ========================================================================== 1. --- Fix problems with INFLD GUI non-edit controls (combos, date pickers, etc.) failing to get the automatic width expansion needed for the extra interface elements (e.g. drop-down button). (Introduced in 1139.1). 2. --- Fix problem with INFLD GUI control heights ranging between 200 and 2000 millirows, rather than the expected 1000 millirows, when the starting row was not a multiple of 1000 millirows. (Introduced in 1139.1) ========================================================================== A-Shell Development Notes Version 5.1.1139.4 (25 February 2009) ========================================================================== 1. --- Fix multi-line INFLD bug: edit box was one row too tall, and maxchars was getting reduced by a factor of 1000 (due to millicolumn related modifications since 1139). 2. --- VUE bug fix: the insert edit history (^_E) function was getting confused by programs that contained variables like VEDIT or even ATE'VEDIT, leading to incorrect edit numbers, and possible stack corruption if the edit number was > 999. ========================================================================== A-Shell Development Notes Version 5.1.1139.3 (24 February 2009) ========================================================================== 1. --- GUI bug fix: TPRINT and DPRINT were not working (side of effect of millicolumn introduction in 1139). ========================================================================== A-Shell Development Notes Version 5.1.1139.2 (24 February 2009) ========================================================================== 1. --- GUI fix for millicolumns: fix problem converting mouse capture coordinates. 2. --- INFLD is now more tolerant of millicolumn values being passed, even in the XMAX param (although that is probably still asking for confusion.) ========================================================================== A-Shell Development Notes Version 5.1.1139.1 (23 February 2009) ========================================================================== 1. --- MX_FILEPOS bug fix: Versions of A-Shell with LFS (large file) support were internally treating the layout of the array as containg 64 bit values instead of 32 bit values, which completely corrupted the use of the MX_FILEPOS function. (Including the FILIDX parameter in XTREE.) 2. --- AUI control scaling tweak: recent fixes to the scaling logic, along with the switch to millicolumns, was resulting in some dialogs (especially those displayed using MBST_CENTER) ending up a few pixels too large. 3. --- INFLD (GUI mode) now supports millicolumns in the COL (starting column) parameter. Note that the XMAX parameter must still be in integer columns (or characters), not millicolumns. (This restriction may be lifted in a later release.) Millicolumns will be rounded back to regular integer columns in text mode. ========================================================================== A-Shell Development Notes Version 5.1.1139.0 (22 February 2009) ========================================================================== 1. --- New Windows MIAMEX function MX_CHKPCNET (176) to the network state of the local PC (for A-Shell/Windows) or the ATE client: xcall MIAMEX, MX_CHKPCNET, STATUS, FLAGS STATUS [num,out] will return 1 if the PC is connected to the Internet, and 0 if it is not. -1 indicates that the function is not supported (not Windows, ATE not present, or ATE PC version too old). Note that since older versions of A-Shell would not have this function supported, you may want to pre-set STATUS to something like -99 so you don't confuse a non-updated STATUS with a real one (or, use MX_GETVER to check the A-Shell version before calling the function). FLAGS [num,out] returns flags which can be interpreted as following: &h0040 INTERNET_CONNECTION_CONFIGURED - local system has a valid connection to the Internet, but it might not be connected. &h0020 INTERNET_CONNECTION_OFFLINE - local system is in offline mode &h0010 INTERNET_RAS_INSTALLED - ? &h0004 INTERNET_CONNECTION_PROXY - local system uses a proxy server &h0002 INTERNET_CONNECTION_LAN - local system uses a LAN to connect &h0001 INTERNET_CONNECTION_MODEM - local system uses a modem to connect ATE Note: If the A-Shell on the server is 1138.3 or higher, but the ATE PC is not, the function returns STATUS = -1. 2. --- New ATE function AG_CHKPCNET (74) equivalent to MX_CHKPCNET allows you to detect the state of the ATE-connected PC'S internet connectivity from the server: ? TAB(-10,AG_CHKPCNET);chr(127) input "",FLAGS STATUS = FLAGS / 65536 ! STATUS in upper word FLAGS = FLAGS and &hFFFF ! FLAGS in lower word STATUS and FLAGS have the same meaning as in MX_CHKPCNET, but are returned combined into a single 4 byte variable in order to minimize complications if the function times out or is not available. NOTES: - MX_CHKPCNET can be called directly even on A-Shell/UNIX (1138.3 or higher), so there is no particular need to use the AG_CHKPCNET protocol except where the server side is too old (or isn't A-Shell). - If the ATE client is prior to 1138.3, this function will just hang (until the user hits ENTER), so you would do well to check the version of the ATE client (see MX_GETVER) before calling it. (That's another reason to just use MX_CHKPCNET, since performs that check for you, returning -1) 3. --- Dialog scaling bug fix: minimizing and restoring a dialog was not always preserving the exact size and position of the controls in the dialog. 4. --- Dialog minimization bug fix: Close a loophole which did allow a modal dialog to be minimized even though its parent dialog was visible but the main window was invisible. The theory here is that you should not be able to minimize a modal dialog, because that would be the one waiting for input. But if that's the only window visible for the application, then it's ok to minimize it (since it's more like minimizing the entire application.) 5. --- AUI_CONTROL enhancement: MBF2_RESIZE (&h0001000) flag may now be used with an MBF_ALTPOS dialog to allow it to be resized with the mouse. (The range of resizing is from 50% of the original dialog size to maximized.) 6. --- MX_FILESTATS enhancement to optionally return file version info and hash. New syntax: xcall MIAMEX,MX_FILESTATS,l'r,path,bytes{,mtime{,ctime{,mode{,ver{,hash}}}}} ver [out,string] returns the file version information (for RUN, LIT and SBX files only), in the format "a.b.c{.d{.e})" where a=vmajor, b=vminor, c=vsub, d=vedit, e=vpatch. Note that because this format may not be convenient for easily compariing two versions to see which is later, optionally you can retrieve the string in the format "aaaaa.bbbbb.ccccc.ddddd.eeeee" by passing a string mapped as 30 bytes for the ver parameter. Files that do not have versions will return empty version strings (rather than either of the formats described above). The function does not yet support retrieving version strings from EXE and DLL files, but that may be added in a future update. hash [out,s15+] returns the file hash code in the format ###-###-###-### 7. --- AG_FILESTATS (31) enhanced to optionally return version and hash strings, per MX_FILESTATS. The new syntax is: ? tab(-10,AG_FILESTATS);fspec{,versiz{,hashsiz}};chr(127); and the return string is of the format bytes,mtime,ctime,mode{,ver{hash}} versiz and hashsiz are numeric values representing the size of the strings you intend to retrieve them into. If 0 or not specified, then the corresponding field will not be returned. Set versiz=30 to get the #####.#####.#####.#####.##### format (see MX_FILESTATS). Note that MX_FILESTATS is generally use in preference to AG_FILESTATS, because it is easier to use (standard XCALL return values), and works in all the same cases (including ATE), with the one exception that it requires A-Shell on the server. AG_FILESTATS could be used on any kind of server. 8. --- AUI enhancement: millicolumns have now arrived, to join millirows. ========================================================================== A-Shell Development Notes Version 5.1.1138.2 (19 February 2009) ========================================================================== 1. --- Dialog scaling bug fix: fix problem that was exacerbated by the earlier fix in 1137.7. ========================================================================== A-Shell Development Notes Version 5.1.1138.1 (18 February 2009) ========================================================================== 1. --- The A-Shell server now keeps track of ATE client versions in JOBTBL.SYS, so that they can be displayed using SYSTAT/ATE (see below). 2. --- SYSTAT.LIT 3.0(159) now displays the ATE client version information, in place of the memory partition size, when using the /ATE switch. 3. --- A-Shell now supports a new optional file %MIAME%/atesetup/options.txt, which if present, may contain a single line of command line switches to be passed to the ATE update routine. By default, only the /AUTOUPDATE switch is passed (and at this point, that is the only recognized switch), but this opens the door for adding additional options, even custom dealer-implemented ones, to the update/installer. ========================================================================== A-Shell Development Notes Version 5.1.1138.0 (17 February 2009) ========================================================================== 1. --- SQL.SBR 0.1 "release" for A-Shell/Windows: SQL.SBR is really just the "hub", and requires a "connector" module to complete the connection from A-Shell to an SQL database. No connectors are officially released yet, although there is pre-release MySQL connector (ashmysql.dll) that can be made available to a limited number of beta testers. (Contact MicroSabio or stay tuned for further details.) 2. --- XTREE enhancement: New cformat code ] may be added to any column in a file-mode tree to force trailing blanks to be stripped before loading the cell. (This is automatic in array mode, but in file-mode, the blanks may be needed to preserve the interpretation of the returned selection string.) 3. --- INFLD bug fix: INFLD was failing to clear the "1-click cursor alignment" region on exit. The result was that there would in some screens be a region (one row high) where clicking would generate a bunch of chr(8) or chr(12) characters. 4. --- XTREE bug fix: The xtr'expandlevel feature was not working reliably, because some operations performed on the tree after setting up the expand/collapse level were having a side effect which caused some rows to get expanded. ========================================================================== A-Shell Development Notes Version 5.1.1137.7 (16 February 2009) ========================================================================== 1. --- `PEX bug fix: //META file transfers were not being initiated when running APEX in a second instance (as is always the case in ATE). 2. --- INFLD enhancement: TYPE ||P may be used with the security type field (S) to automatically decrypt/encrypt a password, using A-Shell's standard password encryption scheme. (See MX_PWCRYPT). 3. --- MX_PWCRYPT bug fix: it was failing to recognize non-encrypted passwords, thus "decrypting" them was instead mangling them. 4. --- Dialog scaling bug fix: MBF_ALTPOS dialogs no longer inherit any scaling from their parents. (Previously, the size of a child dialog was being affected by whether the parent dialog was normal or maximized.) ========================================================================== A-Shell Development Notes Version 5.1.1137.6 (14 February 2009) ========================================================================== 1. --- XTREE bug fix: relative image paths were not working in file mode. Even worse, very long paths were causing A-Shell to crash. 2. --- XTREE bug fix: U (application-only editable) wasn't being respected in some cases, allowing the user to edit cells by clicking on them. 3. --- AG_WINEXEC enhancement: You may now optionally pass the current working directory as a second argument (otherwise the launched process assumes the current A-Shell or ATE working directory). New syntax: ? TAB(-10,AG_WINEXEC);cmd$;chr(127); ! default working dir or ? TAB(-10,AG_WINEXEC);cmd$;"~";workdir$;chr(127); ! explicit working dir ========================================================================== A-Shell Development Notes Version 5.1.1137.5 (12 February 2009) ========================================================================== 1. --- Clean up various issues relating to the GDI //META command; APEX now displays a progress dialog while transferring a //META file, and disables the export buttons until the first page is fully displayed (i.e. after the META file transfers); also, avoid re-processing //META commands if the page is re-viewed with APEX. 2. --- AG_SHLEXEC debug refinement: when the launch fails, create a SHELLEX.LOG file with addtional details (will be in the ATE SYS: account). ========================================================================== A-Shell Development Notes Version 5.1.1137.4 (10 February 2009) ========================================================================== 1. --- APEX bug fix: fix problem where clicking on a page from within multi-page view was causing the page in the resulting single-page view to mostly outside of the window. ========================================================================== A-Shell Development Notes Version 5.1.1137.3 (10 February 2009) ========================================================================== 1. --- APEX bug fix: A patch in 1137.1 had the undesirable side-effect of disabling the "serialization" of APEX print files (that is, the appending of a unique numeric suffix on the file name so that several copies of the same file could be archived for the duration of the retention period.) 2. --- APEX bug fix: All navigational keyboard commands now recenter the page in the window, eliminating a problem where hitting, say, HOME, would sometimes result in the page being displayed outside the window, making the window appear blank. 3. --- Compiler bug fix (COMPIL 5.1.427) - Compiler was failing to detect a syntax error consisting of an excess character, like a ")" at the end of an ELSEIF line. The bug did not affect the RUN code generation, providing that the excess character was simply that, i.e. excess. 4. --- XTREE bug fix: gradiant select bar styles were getting reset back to the non-gradiant version after an editable cell. ========================================================================== A-Shell Development Notes Version 5.1.1137.2 (04 February 2009) ========================================================================== 1. --- ATE Aux Port printing refinements: Make it more difficult to accidentally terminate aux port printing (mainly with big reports). Previously, a 2 second interruption in the data flow (which could be caused by suspending ATE processing by opening the menu bar), or a CTRL+X would have closed the aux port channel, causing the remainder of the report to appear on the screen. Now, either case will prompt the user to confirm the abort, and in addition, the timeout logic is now smarter so it doesn't get fooled by ATE being busy or suspended. Also, for workstations running XP or higher and that have created any GUI objects since the start of the session, a small activity bar "marquee" will display in the lower right corner of the dialog or window during the printing. Clicking on the marquee acts like hitting CTRL+X (i.e. prompts the user to confirm that they really want to abort printing.) ========================================================================== A-Shell Development Notes Version 5.1.1137.1 (04 February 2009) ========================================================================== 1. --- APEX enhancement: The vertical arrow keys now act like PgUp/PgDn when in single page mode and we are already at the top or bottom of the page. Previous, the vertical arrows would just cease to work when you had scrolled to the vertical limit of the current page, requiring the user to switch to the PgUp/PgDn keys. Also, use of the arrow keys now restores the optimum page positioning within the window (after zooming with the mouse may have left the page position way off one edge in order to anchor the zoom to the mouse position.) 2. --- INFLD/GUI bugfix: Close a loophole in non-theme (i.e. pre-XP) environments where INFLD was still setting intermittently the background color even when the "Force Standard Colors in Edit Boxes" option (Misc. Settings Dialog) was set. This was typically causing inactive INFLD fields to display with the same background as static text. 3. --- Window resizing bugfix: Close a loophole which was intermittently leading to a GPF when resizing a window. Problem was only reported under W2000, but in theory could have happened in any environment given the right set of circumstances (which were essentially random). ========================================================================== A-Shell Development Notes Version 5.1.1137.0 (03 February 2009) ========================================================================== 1. --- APEX enhancement: Underlying DLL SftPrintPreview_IX86_A_##.dll upgraded from version 1.0 to 2.0. Currently the only new feature we are using is a minor change in the way zoom works. Previously, zooming caused the entire page to be repositioned, which generally caused the "focus" of the zoom to move around. Now, the redisplayed page is firmly anchored on the mouse, allowing you to zoom right in on single character if you so desire. ========================================================================== A-Shell Development Notes Version 5.1.1136.2 (31 Januuary 2009) ========================================================================== 1. --- INFLD refinement(?) - the internal folding operation now applies to characters 128-255 (just like the Basic UCS() and LCS() commands). Previously, only 1-127 were folded. ========================================================================== A-Shell Development Notes Version 5.1.1136.1 (29 Januuary 2009) ========================================================================== 1. --- BASORT bug fix: Correct problem introduced in 1136 in which it reported an invalid number of records when calling the sequential BASORT. 2. --- AUI_MENU enhancement: The maximum number of custom menu items has been expanded from 125 to 250. Also, when the GUI trace is active, AUI_MENU operations are traced. 3. --- DTSRCH.SBR enhancement: add trx code 486 to dts'srch'opt=23 ========================================================================== A-Shell Development Notes Version 5.1.1136.0 (29 Januuary 2009) ========================================================================== 1. --- BASORT enhancement: 3 new sort types supported (in addition to the existing 0 (string), 1 (float) and 2 (binary): 3 - Integer (I1, I2, or I4) 4 - "Natural" sort' 5 - "Natural" sort (case insensitive) "Natural" sort is based on an algorithm by Martin Pool which has spread to various other languages and attempts to mimic how humans would naturally sort strings such as "1 Main St", "10 Main St", "2 Main St". (The "natural" thing would be to sort "10 Main St" after "2 Main St", and treat 2 contiguous spaces as one, minimize importance of punctuation, etc., instead of just using the raw byte collating sequence.) The A-Shell implementation deviates slightly from the original version by Martin Pool in that it supports the LDF collating sequence, if available, and doesn't require trailing nulls on the strings. Natural sort keys should always be of type S (string). Warning about using signed integer sort keys (B5, I1, I2 and I4) in files with a control record: traditionally the technique for preventing the control record from getting sorted out of place was to temporarily set it to all nulls, prior to sorting. But this is not adequate for signed integer sort keys, since nulls = 0, which is not at the bottom but in the middle of the range of signed values. The lowest possible signed integer value is -2^N where N is the # of bits in the field (e.g. -128, -32768, etc.) Similarly, for descending sort, the maximum value is 2^N-1. 2. --- BASORT bug fix: B5 keys were not sorting as if signed. (This may have saved some applications from the problem described above with signed sort keys, so if you use B5 for sorting, you may want to double check that.) 3. --- BASORT bug fix: In very rare cases, sorting could lead to the a few empty records being appended to the end of the file. The problem occurred only in the "medium" sort, and only with record sizes not dividing evenly into 512, and even then only rarely. (In fact, it has never been reported, so apparently it is extremely rare or the addition of a few empty records didn't matter.) 4. --- BASORT enhancement: Up to 6 sort keys may now be passed to the random sort: xcall BASORT,ch,reccnt,recsiz, & k1siz,k1pos,k1ord,k2siz,k2pos,k2ord,k3pos,k3siz,k3ord, & k1typ,k2typ,k3typ, & k4siz,k4pos,k4ord,k5siz,k5pos,k5ord,k6pos,k6siz,k6ord, & k4typ,k5typ,k6typ 5. --- BASORT enhancement: The key type parameters may now be passed to the sequential sort: xcall BASORT,chin,chout,recsiz,k1siz,k1pos,k1ord,k2siz,k2pos,k2ord, & k3siz,k3pos,k3ord,k1typ,k2typ,k3typ Previously, only plain string keys were supported, so there was no need for the k?typ parameters. Now you can specify 0 for string, or 4 for natural sort, or 5 for natural case-insensitive sort. 6. --- SORTIT enhancements: Support the 3 new sort types listed above for BASORT, plus F4 and F8. Note, however, that SORTIT does not support B1 or I1 keys, and ignores the LDF collating sequence. 7. --- SORTIT bugfixes: F6 sorting was not properly handling comparisons between numbers whose difference was > 2GB or < -2GB. 8. --- SORT.LIT 1.1(104) now supports the "natural" sort option and also the fold (case insensitive) option. The options may be specified individually for each key by appending "N" (natural) and/or "F" (fold) to the A or D currently used to specify Ascending or Descending. 9. --- XTREE sorting enhancement: S fields are now automatically sorted using the "natural" algorithm (see above) and using the LDF collating sequence. (Since XTREE sorting is normally only for the benefit of display, there doesn't seem to be any particular value in preserving the original "normal" string sort.) 10. --- XTREE bug fix: xtr'nfselstyle wasn't working as documented. (The selected rows were not showing with any highlight when the tree didn't have the focus and xtr'nfselstyle was 0.) 11. --- XTREE enhancement: new DLL version 6.06 supports Windows 7 and improves: x64 support. 12. --- LDF enhancements: New LDF files (each named by appending an "X" to the existing name) have been created to add a standard Latin 1 character collating sequence for the upper 128 characters. (This may be an interim measure until we decide whether there is any reason not to just update the standard LDFs with the collating sequence. Until then, if you are interested in the collating sequence, either rename the "X" version to the standard name, or change the miame.ini ERSATZ statement to reference the "X" version of the LDF.) 13. --- GTLANG.SBR enhancement: The A-Shell extended form of the GTLANG.MAP file is now supported in order to return the upper collating sequence. (See ashinc:gtlang.map) The total size of the map is now 736 bytes long and ends like this: MAP2 LANG'SUN,x,20 MAP